public void RenderConeLight(IConeLight coneLight) { if (deferredConeLightEffect == null) { deferredConeLightEffect = AssetManager.GetAsset <Effect>("Shaders/Deferred/DeferredConeLight"); } // Call lighting methods. // Load Light Params deferredConeLightEffect.Parameters["halfPixel"].SetValue(halfPixel); deferredConeLightEffect.Parameters["lightDirection"].SetValue(coneLight.Direction); deferredConeLightEffect.Parameters["LightPosition"].SetValue(coneLight.Position); deferredConeLightEffect.Parameters["Color"].SetValue(coneLight.Color.ToVector3()); deferredConeLightEffect.Parameters["ViewProjectionInv"].SetValue(Matrix.Invert(Camera.View * Camera.Projection)); deferredConeLightEffect.Parameters["LightViewProjection"].SetValue(coneLight.View * coneLight.Projection); deferredConeLightEffect.Parameters["normalMap"].SetValue(normalMap); deferredConeLightEffect.Parameters["depthMap"].SetValue(depthMap); deferredConeLightEffect.Parameters["power"].SetValue(coneLight.Intensity); deferredConeLightEffect.Parameters["ConeAngle"].SetValue(coneLight.Angle); deferredConeLightEffect.Parameters["ConeDecay"].SetValue(coneLight.Decay); deferredConeLightEffect.Parameters["shadowMod"].SetValue((float)coneLight.ShadowMod); if (!ScreenSpaceShadows) { deferredConeLightEffect.Parameters["CastShadow"].SetValue(coneLight.CastShadow); if (coneLight.CastShadow) { deferredConeLightEffect.Parameters["shadowMap"].SetValue(coneLight.ShadowMap); } } deferredConeLightEffect.CurrentTechnique.Passes[0].Apply(); // Set sampler state to Point as the Surface type requires it in XNA 4.0 GraphicsDevice.SamplerStates[0] = SamplerState.PointClamp; sceneQuad.Draw(-Vector2.One, Vector2.One); }
public void RenderConeLight(IConeLight coneLight) { if (deferredConeLightEffect == null) deferredConeLightEffect = AssetManager.GetAsset<Effect>("Shaders/Deferred/DeferredConeLight"); // Call lighting methods. // Load Light Params deferredConeLightEffect.Parameters["halfPixel"].SetValue(halfPixel); deferredConeLightEffect.Parameters["lightDirection"].SetValue(coneLight.Direction); deferredConeLightEffect.Parameters["LightPosition"].SetValue(coneLight.Position); deferredConeLightEffect.Parameters["Color"].SetValue(coneLight.Color.ToVector3()); deferredConeLightEffect.Parameters["ViewProjectionInv"].SetValue(Matrix.Invert(Camera.View * Camera.Projection)); deferredConeLightEffect.Parameters["LightViewProjection"].SetValue(coneLight.View * coneLight.Projection); deferredConeLightEffect.Parameters["normalMap"].SetValue(normalMap); deferredConeLightEffect.Parameters["depthMap"].SetValue(depthMap); deferredConeLightEffect.Parameters["power"].SetValue(coneLight.Intensity); deferredConeLightEffect.Parameters["ConeAngle"].SetValue(coneLight.Angle); deferredConeLightEffect.Parameters["ConeDecay"].SetValue(coneLight.Decay); deferredConeLightEffect.Parameters["shadowMod"].SetValue((float)coneLight.ShadowMod); if (!ScreenSpaceShadows) { deferredConeLightEffect.Parameters["CastShadow"].SetValue(coneLight.CastShadow); if (coneLight.CastShadow) deferredConeLightEffect.Parameters["shadowMap"].SetValue(coneLight.ShadowMap); } deferredConeLightEffect.CurrentTechnique.Passes[0].Apply(); // Set sampler state to Point as the Surface type requires it in XNA 4.0 GraphicsDevice.SamplerStates[0] = SamplerState.PointClamp; sceneQuad.Draw(-Vector2.One, Vector2.One); }