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 downloadFramebuffer(const FramebufferPointer& srcFramebuffer, const Vec4i& region, QImage& destImage) = 0;
// UBO class... layout MUST match the layout in Transform.slh
class TransformCamera {
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;
// Shared header between C++ and GLSL
#include "TransformCamera_shared.slh"
class TransformCamera : public _TransformCamera {
public:
const Backend::TransformCamera& recomputeDerived(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@>
<@func declareStandardCameraTransform()@>
struct TransformCamera {
mat4 _view;
mat4 _viewInverse;
mat4 _projectionViewUntranslated;
mat4 _projection;
mat4 _projectionInverse;
vec4 _viewport;
vec4 _stereoInfo;
};
<@include gpu/TransformCamera_shared.slh@>
#define TransformCamera _TransformCamera
layout(std140) uniform transformCameraBuffer {
#ifdef GPU_TRANSFORM_IS_STEREO
#ifdef GPU_TRANSFORM_STEREO_CAMERA
TransformCamera _camera[2];
TransformCamera _camera[2];
#else
TransformCamera _camera;
#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 !>
//