AcTools.Render.DeferredShading.DeferredShadingRenderer.DrawTransparent C# (CSharp) Method

DrawTransparent() private method

private DrawTransparent ( ) : void
return void
        private void DrawTransparent() {
            var effect = DeviceContextHolder.GetEffect<EffectDeferredGObject>();
            effect.FxReflectionCubemap.SetResource(_reflectionCubemap.View);
            effect.FxEyePosW.Set(Camera.Position);
            
            DeviceContext.OutputMerger.SetTargets(_gDepthBuffer.DepthView, _temporaryBuffer1.TargetView);
            DeviceContext.OutputMerger.BlendState = DeviceContextHolder.TransparentBlendState;
            Scene.Draw(DeviceContextHolder, Camera, SpecialRenderMode.DeferredTransparentDepth);

            DeviceContext.OutputMerger.DepthStencilState = DeviceContextHolder.ReadOnlyDepthState;
            Scene.Draw(DeviceContextHolder, Camera, SpecialRenderMode.DeferredTransparentForw);
            DeviceContext.OutputMerger.DepthStencilState = null;
            DeviceContext.OutputMerger.BlendState = null;

            DeviceContext.OutputMerger.SetTargets(_gDepthBuffer.DepthView, _gBufferBase.TargetView, _gBufferNormal.TargetView, _gBufferMaps.TargetView);
            DeviceContext.OutputMerger.DepthStencilState = DeviceContextHolder.LessEqualDepthState;
            Scene.Draw(DeviceContextHolder, Camera, SpecialRenderMode.DeferredTransparentDef);

            DrawLights(_temporaryBuffer0);
            if (UseLocalReflections) DrawReflections(_temporaryBuffer3, BlurLocalReflections ? _temporaryBuffer2 : null, _temporaryBuffer0);

            CombineResult(_temporaryBuffer2, _temporaryBuffer0, UseLocalReflections ? _temporaryBuffer3 : null, _temporaryBuffer1);
        }