コード例 #1
0
        /// <summary>
        /// Updates the mie rayleigh textures.
        /// </summary>
        void UpdateMieRayleighTextures()
        {
            // Set RenderTargets
            device.SetRenderTargets(rayleighRT, mieRT);

            device.Clear(Color.CornflowerBlue);

            // Set Scatter Effect parameters
            scatterEffect.CurrentTechnique = scatterEffect.Techniques["Update"];
            scatterEffect.Parameters["InvWavelength"].SetValue(parameters.InverseWaveLengths);
            scatterEffect.Parameters["WavelengthMie"].SetValue(parameters.WaveLengthsMie);
            scatterEffect.Parameters["v3SunDir"].SetValue(new Vector3(-parameters.LightDirection.X, -parameters.LightDirection.Y, -parameters.LightDirection.Z));

            // Apply Effect
            scatterEffect.CurrentTechnique.Passes[0].Apply();

            // Draw
            fullscreenQuad.Render(Vector2.One * -1, Vector2.One);

            // Clear RenderTargets
            device.SetRenderTargets(null);

            // Set Textures
            mieTex      = mieRT;
            rayleighTex = rayleighRT;
        }
コード例 #2
0
        /// <summary>
        /// Blurs the SSAO.
        /// </summary>
        /// <param name="device">The device.</param>
        void BlurSSAO(GraphicsDevice device)
        {
            // Set the Blur RenderTarget and clear the GraphicsDevice
            device.SetRenderTarget(blurRT);
            device.Clear(Color.White);

            // Set SSAO RenderTarget on the GraphicsDevice
            device.Textures[3]      = ssaoRT;
            device.SamplerStates[3] = SamplerState.LinearClamp;

            // Set Effect Parameters
            blurEffect.Parameters["blurDirection"].SetValue(Vector2.One);
            blurEffect.Parameters["targetSize"].SetValue(gBufferTextureSize);

            // Apply Effect
            blurEffect.CurrentTechnique.Passes[0].Apply();

            // Draw
            fullscreenQuad.Render(Vector2.One * -1, Vector2.One);
        }
コード例 #3
0
 /// <summary>
 /// Clears the G buffer.
 /// </summary>
 private void ClearGBuffer()
 {
     clearBufferEffect.Techniques[0].Passes[0].Apply();
     quadRenderer.Render(Vector2.One * -1, Vector2.One);
 }