87 lines · 2.8 KB · C
RawDownload
////  DeferredFrameTransform.h//  libraries/render-utils/src/////  Created by Sam Gateau 6/3/2016.//  Copyright 2016 High Fidelity, Inc.////  Distributed under the Apache License, Version 2.0.//  See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html// #ifndef hifi_DeferredFrameTransform_h#define hifi_DeferredFrameTransform_h #include <gpu/Resource.h> #include <render/Forward.h>#include <render/DrawTask.h> // DeferredFrameTransform is  a helper class gathering in one place the needed camera transform// and frame resolution needed for all the deferred rendering passes taking advantage of the Deferred buffersclass DeferredFrameTransform {public:    using UniformBufferView = gpu::BufferView;     DeferredFrameTransform();     void update(RenderArgs* args, glm::vec2 jitter);     UniformBufferView getFrameTransformBuffer() const { return _frameTransformBuffer; } protected:      // Class describing the uniform buffer with the transform info common to the AO shaders    // It s changing every frame    class FrameTransform {    public:        // Pixel info is { viewport width height}        glm::vec4 pixelInfo;        glm::vec4 invpixelInfo;        // Depth info is { n.f, f - n, -f}        glm::vec4 depthInfo;        // Stereo info is { isStereoFrame, halfWidth }        glm::vec4 stereoInfo{ 0.0 };        // Mono proj matrix or Left and Right proj matrix going from Mono Eye space to side clip space        glm::mat4 projection[2];        // Inverse proj matrix or Left and Right proj matrix going from Mono Eye space to side clip space        glm::mat4 invProjection[2];        // THe mono projection for sure        glm::mat4 projectionMono;        // Inv View matrix from eye space (mono) to world space        glm::mat4 invView;        // View matrix from world space to eye space (mono)        glm::mat4 view;        // Mono proj matrix or Left and Right proj matrix going from Mono Eye space to side clip space without jittering        glm::mat4 projectionUnjittered[2];        // Inverse proj matrix or Left and Right proj matrix going from Mono Eye space to side clip space without jittering        glm::mat4 invProjectionUnjittered[2];         FrameTransform() {}    };    UniformBufferView _frameTransformBuffer;    }; using DeferredFrameTransformPointer = std::shared_ptr<DeferredFrameTransform>;    class GenerateDeferredFrameTransform {public:     using Input = glm::vec2;    using Output = DeferredFrameTransformPointer;    using JobModel = render::Job::ModelIO<GenerateDeferredFrameTransform, Input, Output>;     GenerateDeferredFrameTransform() {}     void run(const render::RenderContextPointer& renderContext, const Input& jitter, Output& frameTransform); private:}; #endif // hifi_DeferredFrameTransform_h

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t