private Texture2D RenderView(IPreparedFrame preparedFrame, HiddenAreaMesh hiddenAreaMesh, Matrix viewTransform, Matrix projectionTransform) { var renderTexture = preparedFrame.RenderView(device.ImmediateContext, hiddenAreaMesh, viewTransform, projectionTransform); mostRecentProjectionTransform = projectionTransform; mostRecentRenderTexture = renderTexture; return(renderTexture); }
public void PrepareMask(DeviceContext context, HiddenAreaMesh mesh) { context.Rasterizer.State = noCullRasterizerState; context.OutputMerger.SetDepthStencilState(writeStencilState); context.InputAssembler.InputLayout = inputLayout; context.VertexShader.Set(vertexShader); context.PixelShader.Set(pixelShader); mesh?.Draw(context); }
private void PrepareView(DeviceContext context, HiddenAreaMesh hiddenAreaMesh, Matrix viewTransform, Matrix projectionTransform) { float c = ColorUtils.SrgbToLinear(68 / 255f); Action prepareMask = () => { masker.PrepareMask(context, hiddenAreaMesh); }; passController.Prepare(context, new Color(c, c, c), 255, prepareMask); viewProjectionTransformBufferManager.Update(context, viewTransform, projectionTransform); }
private void SubmitEye(EVREye eye, IPreparedFrame preparedFrame) { immediateContext.WithEvent($"VRApp::SubmitEye({eye})", () => { HiddenAreaMesh hiddenAreaMesh = hiddenAreaMeshes.GetMesh(eye); Matrix viewMatrix = GetViewMatrix(eye); Matrix projectionMatrix = GetProjectionMatrix(eye); var resultTexture = RenderView(preparedFrame, hiddenAreaMesh, viewMatrix, projectionMatrix); VRTextureBounds_t bounds; bounds.uMin = 0; bounds.uMax = 1; bounds.vMin = 0; bounds.vMax = 1; Texture_t eyeTexture; eyeTexture.handle = resultTexture.NativePointer; eyeTexture.eType = ETextureType.DirectX; eyeTexture.eColorSpace = EColorSpace.Auto; OpenVR.Compositor.Submit(eye, ref eyeTexture, ref bounds, EVRSubmitFlags.Submit_Default); }); }
public HiddenAreaMeshes(Device device) { leftEyeMesh = HiddenAreaMesh.Make(device, EVREye.Eye_Left); rightEyeMesh = HiddenAreaMesh.Make(device, EVREye.Eye_Right); }
public Texture2D RenderView(DeviceContext context, HiddenAreaMesh hiddenAreaMesh, Matrix viewTransform, Matrix projectionTransform) { prepareViewAction(context, hiddenAreaMesh, viewTransform, projectionTransform); context.ExecuteCommandList(drawViewCommandList, false); return(renderTexture); }