| Index: chrome/browser/android/vr_shell/vr_util.h
|
| diff --git a/chrome/browser/android/vr_shell/vr_util.h b/chrome/browser/android/vr_shell/vr_util.h
|
| index 53fa9de9c10c306be759079f451d01870e27200f..830f3e278569dc7c5a21438a2385d28679172d4f 100644
|
| --- a/chrome/browser/android/vr_shell/vr_util.h
|
| +++ b/chrome/browser/android/vr_shell/vr_util.h
|
| @@ -12,11 +12,46 @@
|
|
|
| namespace vr_shell {
|
|
|
| +// 2D rectangles. Unlike gvr::Rectf and gvr::Recti, these have width and height
|
| +// rather than right and top.
|
| +typedef struct Recti {
|
| + int x;
|
| + int y;
|
| + int width;
|
| + int height;
|
| +} Recti;
|
| +
|
| +typedef struct Rectf {
|
| + float x;
|
| + float y;
|
| + float width;
|
| + float height;
|
| +} Rectf;
|
| +
|
| +void SetIdentityM(gvr::Mat4f& mat);
|
| +
|
| +void TranslateM(gvr::Mat4f& tmat, gvr::Mat4f& mat, float x, float y, float z);
|
| +void TranslateMRight(gvr::Mat4f& tmat,
|
| + gvr::Mat4f& mat,
|
| + float x,
|
| + float y,
|
| + float z);
|
| +
|
| +void ScaleM(gvr::Mat4f& tmat, const gvr::Mat4f& mat, float x, float y, float z);
|
| +void ScaleMRight(gvr::Mat4f& tmat, const gvr::Mat4f& mat,
|
| + float x, float y, float z);
|
| +
|
| std::array<float, 16> MatrixToGLArray(const gvr::Mat4f& matrix);
|
|
|
| // Util functions that are copied from the treasure_hunt NDK demo in
|
| // third_party/gvr-andoir-sdk/ folder.
|
| gvr::Mat4f MatrixTranspose(const gvr::Mat4f& mat);
|
| +std::array<float, 4> MatrixVectorMul(const gvr::Mat4f& matrix,
|
| + const std::array<float, 4>& vec);
|
| +std::array<float, 3> MatrixVectorMul(const gvr::Mat4f& matrix,
|
| + const std::array<float, 3>& vec);
|
| +gvr::Vec3f MatrixVectorMul(const gvr::Mat4f& m, const gvr::Vec3f& v);
|
| +gvr::Vec3f MatrixVectorRotate(const gvr::Mat4f& m, const gvr::Vec3f& v);
|
| gvr::Mat4f MatrixMul(const gvr::Mat4f& matrix1, const gvr::Mat4f& matrix2);
|
| gvr::Mat4f PerspectiveMatrixFromView(const gvr::Rectf& fov,
|
| float z_near,
|
| @@ -25,6 +60,12 @@ gvr::Rectf ModulateRect(const gvr::Rectf& rect, float width, float height);
|
| gvr::Recti CalculatePixelSpaceRect(const gvr::Sizei& texture_size,
|
| const gvr::Rectf& texture_rect);
|
|
|
| +// Provides the direction the head is looking towards as a 3x1 unit vector.
|
| +gvr::Vec3f getForwardVector(const gvr::Mat4f& matrix);
|
| +
|
| +// Provides the relative translation of the head as a 3x1 vector.
|
| +gvr::Vec3f getTranslation(const gvr::Mat4f& matrix);
|
| +
|
| // Compile a shader.
|
| GLuint CompileShader(GLenum shader_type,
|
| const GLchar* shader_source,
|
| @@ -37,6 +78,20 @@ GLuint CreateAndLinkProgram(GLuint vertex_shader_handle,
|
| const GLchar** attributes,
|
| std::string& error);
|
|
|
| +gvr::Quatf QuatMultiply(const gvr::Quatf& a, const gvr::Quatf& b);
|
| +
|
| +gvr::Mat4f QuatToMatrix(const gvr::Quatf& quat);
|
| +
|
| +float VectorLength(const gvr::Vec3f& vec);
|
| +
|
| +void NormalizeVector(gvr::Vec3f& vec);
|
| +
|
| +float VectorDot(const gvr::Vec3f& a, const gvr::Vec3f& b);
|
| +
|
| +void NormalizeQuat(gvr::Quatf& quat);
|
| +
|
| +gvr::Quatf QuatFromAxisAngle(float x, float y, float z, float angle);
|
| +
|
| } // namespace vr_shell
|
|
|
| #endif // CHROME_BROWSER_ANDROID_VR_SHELL_VR_UTIL_H_
|
|
|