Пример #1
0
    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);
    }
Пример #2
0
    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);
    }
Пример #4
0
    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);
 }