AcTools.Render.Kn5SpecificSpecial.AmbientShadowKn5ObjectRenderer.Draw C# (CSharp) Method

Draw() private method

private Draw ( float multipler, int size, int padding, bool fade ) : void
multipler float
size int
padding int
fade bool
return void
        private void Draw(float multipler, int size, int padding, bool fade) {
            DeviceContext.ClearRenderTargetView(_summBuffer.TargetView, Color.Transparent);

            // draw
            var iter = 0f;
            for (var k = 0; k < Iterations; k++) {
                if (DebugMode) {
                    DrawShadow(Vector3.UnitY, Vector3.UnitZ);
                } else {
                    var x = MathF.Random(-1f, 1f);
                    var y = MathF.Random(0.1f, 1f) / MathF.Clamp(DiffusionLevel, 0.001f, 1.0f);
                    var z = MathF.Random(-1f, 1f);

                    DrawShadow(new Vector3(x, y, z));
                }

                AddShadow();
                iter++;
            }

            DeviceContext.OutputMerger.BlendState = null;
            _effect.FxSize.Set(new Vector4(Width, Height, 1f / Width, 1f / Height));

            // blurring
            for (var i = BlurResult ? 2 : 1; i > 0; i--) {
                _effect.FxMultipler.Set(i > 1 ? 2f : 1f);

                DeviceContext.ClearRenderTargetView(_tempBuffer.TargetView, Color.Transparent);
                DeviceContext.OutputMerger.SetTargets(_tempBuffer.TargetView);

                _effect.FxInputMap.SetResource(_summBuffer.View);
                _effect.TechHorizontalShadowBlur.DrawAllPasses(DeviceContext, 6);

                DeviceContext.ClearRenderTargetView(_summBuffer.TargetView, Color.Transparent);
                DeviceContext.OutputMerger.SetTargets(_summBuffer.TargetView);

                _effect.FxInputMap.SetResource(_tempBuffer.View);
                _effect.TechVerticalShadowBlur.DrawAllPasses(DeviceContext, 6);
            }

            // result
            DeviceContext.ClearRenderTargetView(RenderTargetView, Color.Transparent);
            DeviceContext.OutputMerger.SetTargets(RenderTargetView);
            _effect.FxInputMap.SetResource(_summBuffer.View);
            _effect.FxCount.Set(iter / SkyBrightnessLevel);
            _effect.FxMultipler.Set(multipler);
            _effect.FxPadding.Set(fade ? (float)padding / size : 0f);
            _effect.FxShadowSize.Set(new Vector2(_shadowSize.X, _shadowSize.Z) * ClippingCoefficient);
            _effect.TechResult.DrawAllPasses(DeviceContext, 6);
        }