public void WriteToShader(string name, RendererShader shader) { var prefix = name += "."; shader.SetVector4(prefix + "DiffuseColor", DiffuseColor); shader.SetInt(prefix + "DiffuseMap", 0); shader.SetInt(prefix + "SpecularMap", 1); shader.SetFloat(prefix + "Ambient", Ambient); shader.SetFloat(prefix + "Shininess", Shininess); shader.SetFloat(prefix + "SpecularStrength", SpecularStrength); }
private void RenderPass2(RenderContext context, Camera camera) { Pass = DeferredPass.Pass2; ObjectManager.PushDebugGroup("OnRender LightShader", this); _DefLightShader.Bind(); GPosition.Bind(TextureUnit.Texture0); GNormal.Bind(TextureUnit.Texture1); GAlbedoSpec.Bind(TextureUnit.Texture2); GMaterial.Bind(TextureUnit.Texture3); if (Renderer.Current.UseShadows) { context.GetPipeline <DirectionalShadowRenderPipeline>().FrameBuffer.GetDestinationTexture().Bind(TextureUnit.Texture4); _DefLightShader.SetInt("DirectionalShadowMap", 4); context.GetPipeline <PointShadowRenderPipeline>().FrameBuffer.GetDestinationTexture().Bind(TextureUnit.Texture5); _DefLightShader.SetInt("PointShadowMap", 5); } _DefLightShader.SetVector3("ViewPos", camera.Position); _DefLightShader.SetFloat("FarPlane", camera.FarPlane); // TODO: Move to Pass1 //_DefLightShader.SetMaterial("material", Material.Default); _DefLightShader.BindBlock("LightsArray", context.LightBinding); _DefLightShader.SetInt("LightCount", context.LightObjects.Count); context.GetPipeline <ForwardRenderPipeline>().FrameBuffer.Bind(); vao.Bind(); GL.Disable(EnableCap.DepthTest); vao.Draw(); GL.Enable(EnableCap.DepthTest); ObjectManager.PopDebugGroup(); }