mirror of
https://gitlab.com/OpenMW/openmw.git
synced 2025-04-28 21:07:59 +03:00

Multiview shaders. Refactor Frustum management Rewrite shared shadow map cull mask should respect stereo Stereo savegame screencap LocalMap refactoring use the vertex buffer hint instead of the display list patch to enable/disable display lists Character preview fixes
61 lines
1.4 KiB
C++
61 lines
1.4 KiB
C++
#ifndef STEREO_TYPES_H
|
|
#define STEREO_TYPES_H
|
|
|
|
#include <osg/Matrix>
|
|
#include <osg/Vec3>
|
|
|
|
|
|
namespace Stereo
|
|
{
|
|
enum class Eye
|
|
{
|
|
Left = 0,
|
|
Right = 1,
|
|
Center = 2
|
|
};
|
|
|
|
struct Pose
|
|
{
|
|
//! Position in space
|
|
osg::Vec3 position{ 0,0,0 };
|
|
//! Orientation in space.
|
|
osg::Quat orientation{ 0,0,0,1 };
|
|
|
|
//! Add one pose to another
|
|
Pose operator+(const Pose& rhs);
|
|
const Pose& operator+=(const Pose& rhs);
|
|
|
|
//! Scale a pose (does not affect orientation)
|
|
Pose operator*(float scalar);
|
|
const Pose& operator*=(float scalar);
|
|
Pose operator/(float scalar);
|
|
const Pose& operator/=(float scalar);
|
|
|
|
bool operator==(const Pose& rhs) const;
|
|
};
|
|
|
|
struct FieldOfView {
|
|
float angleLeft{ 0.f };
|
|
float angleRight{ 0.f };
|
|
float angleUp{ 0.f };
|
|
float angleDown{ 0.f };
|
|
|
|
bool operator==(const FieldOfView& rhs) const;
|
|
};
|
|
|
|
struct View
|
|
{
|
|
Pose pose;
|
|
FieldOfView fov;
|
|
bool operator==(const View& rhs) const;
|
|
|
|
osg::Matrix viewMatrix(bool useGLConventions);
|
|
osg::Matrix perspectiveMatrix(float near, float far, bool reverseZ);
|
|
};
|
|
|
|
std::ostream& operator <<(std::ostream& os, const Pose& pose);
|
|
std::ostream& operator <<(std::ostream& os, const FieldOfView& fov);
|
|
std::ostream& operator <<(std::ostream& os, const View& view);
|
|
}
|
|
|
|
#endif
|