Created shared c++/glsl header for transformcamera

This commit is contained in:
Olivier Prat 2018-04-20 09:01:19 +02:00
parent 440e2b8452
commit 57ff1c54e1
3 changed files with 34 additions and 20 deletions

View file

@ -64,17 +64,11 @@ public:
virtual void recycle() const = 0; virtual void recycle() const = 0;
virtual void downloadFramebuffer(const FramebufferPointer& srcFramebuffer, const Vec4i& region, QImage& destImage) = 0; virtual void downloadFramebuffer(const FramebufferPointer& srcFramebuffer, const Vec4i& region, QImage& destImage) = 0;
// UBO class... layout MUST match the layout in Transform.slh // Shared header between C++ and GLSL
class TransformCamera { #include "TransformCamera_shared.slh"
public:
mutable Mat4 _view;
mutable Mat4 _viewInverse;
mutable Mat4 _projectionViewUntranslated;
Mat4 _projection;
mutable Mat4 _projectionInverse;
Vec4 _viewport; // Public value is int but float in the shader to stay in floats for all the transform computations.
mutable Vec4 _stereoInfo;
class TransformCamera : public _TransformCamera {
public:
const Backend::TransformCamera& recomputeDerived(const Transform& xformView) const; const Backend::TransformCamera& recomputeDerived(const Transform& xformView) const;
TransformCamera getEyeCamera(int eye, const StereoState& stereo, const Transform& xformView) const; TransformCamera getEyeCamera(int eye, const StereoState& stereo, const Transform& xformView) const;
}; };

View file

@ -11,20 +11,14 @@
<@def GPU_TRANSFORM_STATE_SLH@> <@def GPU_TRANSFORM_STATE_SLH@>
<@func declareStandardCameraTransform()@> <@func declareStandardCameraTransform()@>
struct TransformCamera { <@include gpu/TransformCamera_shared.slh@>
mat4 _view;
mat4 _viewInverse; #define TransformCamera _TransformCamera
mat4 _projectionViewUntranslated;
mat4 _projection;
mat4 _projectionInverse;
vec4 _viewport;
vec4 _stereoInfo;
};
layout(std140) uniform transformCameraBuffer { layout(std140) uniform transformCameraBuffer {
#ifdef GPU_TRANSFORM_IS_STEREO #ifdef GPU_TRANSFORM_IS_STEREO
#ifdef GPU_TRANSFORM_STEREO_CAMERA #ifdef GPU_TRANSFORM_STEREO_CAMERA
TransformCamera _camera[2]; TransformCamera _camera[2];
#else #else
TransformCamera _camera; TransformCamera _camera;
#endif #endif

View file

@ -0,0 +1,26 @@
// glsl / C++ compatible source as interface for FadeEffect
#ifdef __cplusplus
# define MAT4 Mat4
# define VEC4 Vec4
# define MUTABLE mutable
#else
# define MAT4 mat4
# define VEC4 vec4
# define MUTABLE
#endif
struct _TransformCamera {
MUTABLE MAT4 _view;
MUTABLE MAT4 _viewInverse;
MUTABLE MAT4 _projectionViewUntranslated;
MAT4 _projection;
MUTABLE MAT4 _projectionInverse;
VEC4 _viewport; // Public value is int but float in the shader to stay in floats for all the transform computations.
MUTABLE VEC4 _stereoInfo;
};
// <@if 1@>
// Trigger Scribe include
// <@endif@> <!def that !>
//