/// <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; }
/// <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); }
/// <summary> /// Clears the G buffer. /// </summary> private void ClearGBuffer() { clearBufferEffect.Techniques[0].Passes[0].Apply(); quadRenderer.Render(Vector2.One * -1, Vector2.One); }