AcTools.Render.DeferredShading.DeferredShadingRenderer.CombineResult C# (CSharp) 메소드

CombineResult() 개인적인 메소드

private CombineResult ( TargetResourceTexture target, TargetResourceTexture light, TargetResourceTexture reflection, TargetResourceTexture bottomLayer = null, DepthStencilView limitedBy = null ) : void
target AcTools.Render.Base.TargetTextures.TargetResourceTexture
light AcTools.Render.Base.TargetTextures.TargetResourceTexture
reflection AcTools.Render.Base.TargetTextures.TargetResourceTexture
bottomLayer AcTools.Render.Base.TargetTextures.TargetResourceTexture
limitedBy DepthStencilView
리턴 void
        private void CombineResult(TargetResourceTexture target, TargetResourceTexture light, TargetResourceTexture reflection,
                TargetResourceTexture bottomLayer = null, DepthStencilView limitedBy = null) {
            DeviceContextHolder.QuadBuffers.Prepare(DeviceContext, _deferredResult.LayoutPT);
            DeviceContext.OutputMerger.BlendState = null;

            if (limitedBy == null) {
                DeviceContext.OutputMerger.SetTargets(target.TargetView);
            } else {
                DeviceContext.OutputMerger.SetTargets(limitedBy, target.TargetView);
                DeviceContext.OutputMerger.DepthStencilState = DeviceContextHolder.GreaterReadOnlyDepthState;
            }

            DeviceContext.ClearRenderTargetView(target.TargetView, ColorTransparent);

            _deferredResult.FxWorldViewProjInv.SetMatrix(Camera.ViewProjInvert);
            _deferredResult.FxScreenSize.Set(new Vector4(Width, Height, 1f / Width, 1f / Height));

            _deferredResult.FxBaseMap.SetResource(_gBufferBase.View);
            _deferredResult.FxNormalMap.SetResource(_gBufferNormal.View);
            _deferredResult.FxMapsMap.SetResource(_gBufferMaps.View);
            _deferredResult.FxDepthMap.SetResource(_gDepthBuffer.View);

            _deferredResult.FxEyePosW.Set(Camera.Position);
            _deferredResult.FxLightMap.SetResource(light?.View);
            _deferredResult.FxLocalReflectionMap.SetResource(reflection?.View);
            _deferredResult.FxBottomLayerMap.SetResource(bottomLayer?.View);
            _deferredResult.FxReflectionCubemap.SetResource(_reflectionCubemap.View);

            EffectTechnique tech;
            switch (Mode) {
                case RenderingMode.DebugGBuffer:
                    tech = _deferredResult.TechDebug;
                    break;

                case RenderingMode.DebugPostEffects:
                    tech = _deferredResult.TechDebugPost;
                    break;

                case RenderingMode.DebugLighting:
                    tech = _deferredResult.TechDebugLighting;
                    break;

                case RenderingMode.DebugLocalReflections:
                    tech = _deferredResult.TechDebugLocalReflections;
                    break;

                case RenderingMode.Result:
                case RenderingMode.WithoutTransparent:
                    tech = _deferredResult.TechCombine0;
                    break;

                default:
                    return;
            }

            tech.DrawAllPasses(DeviceContext, 6);

            if (limitedBy != null) DeviceContext.OutputMerger.DepthStencilState = null;
        }