public void RenderBucketDepth(Environment env, Camera cam, Bucket bucket, DepthRenderMode renderMode) { for (int i = 0; i < geometries.Count; i++) { if (geometries[i].AttachedToRoot && geometries[i].Material.Bucket == bucket) { if (geometries[i].DepthShader == null) { if (geometries[i].GetShader() == null) { geometries[i].SetDefaultShader(); } ShaderProperties p = new ShaderProperties(geometries[i].ShaderProperties); p.SetProperty("DEPTH", true); geometries[i].DepthShader = ShaderManager.GetShader(typeof(Shaders.DepthShader), p); } if (renderMode == DepthRenderMode.Shadow && geometries[i].Material.GetBool(Material.MATERIAL_CASTSHADOWS)) { geometries[i].DepthShader.Use(); geometries[i].DepthShader.ApplyMaterial(geometries[i].Material); geometries[i].DepthShader.SetTransforms(geometries[i].GetWorldMatrix(), cam.ViewMatrix, cam.ProjectionMatrix); geometries[i].DepthShader.Update(env, cam, geometries[i].Mesh); geometries[i].DepthShader.Render(geometries[i].Mesh); geometries[i].DepthShader.End(); } Shader.Clear(); Texture2D.Clear(); } } }
public void RenderBucketDepth(Environment env, Camera cam, Bucket bucket, DepthRenderMode renderMode) { for (int i = 0; i < geometries.Count; i++) { if (geometries[i].AttachedToRoot && geometries[i].Material.Bucket == bucket) { if (geometries[i].DepthShader == null) { if (geometries[i].GetShader() == null) geometries[i].SetDefaultShader(); ShaderProperties p = new ShaderProperties(geometries[i].ShaderProperties); p.SetProperty("DEPTH", true); geometries[i].DepthShader = ShaderManager.GetShader(typeof(Shaders.DepthShader), p); } if (renderMode == DepthRenderMode.Shadow && geometries[i].Material.GetBool(Material.MATERIAL_CASTSHADOWS)) { geometries[i].DepthShader.Use(); geometries[i].DepthShader.ApplyMaterial(geometries[i].Material); geometries[i].DepthShader.SetTransforms(geometries[i].GetWorldMatrix(), cam.ViewMatrix, cam.ProjectionMatrix); geometries[i].DepthShader.Update(env, cam, geometries[i].Mesh); geometries[i].DepthShader.Render(geometries[i].Mesh); geometries[i].DepthShader.End(); } Shader.Clear(); Texture2D.Clear(); } } }