public virtual void RenderShadowMap(RenderScene scene, CameraInfo lightCamera, int framebufferTarget) { GL.BindFramebuffer(FramebufferTarget.Framebuffer, framebufferTarget); GL.Clear(ClearBufferMask.DepthBufferBit); RenderScene(scene, lightCamera, shadowMapMaterial); }
public override void RenderShadowMaps(Renderer renderer, RenderScene scene) { CameraInfo info = renderer.CameraInfo; Vector3 position = info.Position; position -= lightDistance * lightDirection; lightDirection.Normalize(); // Orthographic camera info.CopyTo(renderCameraInfo); renderCameraInfo.Position = position; renderCameraInfo.Target = position + lightDirection; renderCameraInfo.NearPlane = nearDistance; renderCameraInfo.FarPlane = farDistance; renderCameraInfo.RenderWidth = preferredShadowMapResolution.Width; renderCameraInfo.RenderHeight = preferredShadowMapResolution.Height; renderCameraInfo.Type = CameraType.Orthographic; Matrix4 proj; Matrix4 view; renderCameraInfo.GetProjection(out proj); renderCameraInfo.GetView(out view); shadowMap[0].LightViewProjection = view * proj; renderer.RenderShadowMap(scene, renderCameraInfo, shadowMap[0].FrameBuffer); }
protected virtual void RenderShadowMaps(RenderScene scene) { foreach (Light light in scene.Lights) { light.RenderShadowMaps(this, scene); } }
public virtual void Render(RenderScene scene) { // Render all shadow maps // RenderShadowMaps(scene); // GL.BindFramebuffer(FramebufferTarget.Framebuffer, 0); GL.Clear(ClearBufferMask.DepthBufferBit | ClearBufferMask.ColorBufferBit); //Blit(scene.Lights[0].GetShadowMaps()[0].DepthTexture); RenderScene(scene, cameraInfo); }
public virtual void RenderScene(RenderScene scene, CameraInfo info, Material overrideMaterial) { info.GetView(out view); info.GetProjection(out projection); Matrix4.Mult(ref view, ref projection, out viewProjection); Material material = overrideMaterial; if (overrideMaterial != null) { overrideMaterial.Apply(this); overrideMaterial.SetViewProjectionTransform(ref viewProjection); } foreach (var renderNodeList in scene.RenderNodes.Values) { var model = renderNodeList[0].Model; for (int meshIndex = 0; meshIndex < model.MeshCount; ++meshIndex) { var mesh = model.MeshGroup.Meshes[meshIndex]; if (overrideMaterial == null) { material = model.Material; material.Apply(this); material.SetViewProjectionTransform(ref viewProjection); } mesh.EnableAttributeArrays(); foreach (var meshInstance in renderNodeList) { if (meshInstance.Visible) { material.SetWorldTransform(ref meshInstance.Transform); mesh.Draw(); } } mesh.DisableAttributeArrays(); } } }
public void RenderScene(RenderScene scene, CameraInfo info) { RenderScene(scene, info, null); }
public virtual void RenderShadowMaps(Renderer renderer, RenderScene scene) { }