diff options
Diffstat (limited to '3rdparty/bgfx/examples/41-tess/matrices.sh')
-rw-r--r-- | 3rdparty/bgfx/examples/41-tess/matrices.sh | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/3rdparty/bgfx/examples/41-tess/matrices.sh b/3rdparty/bgfx/examples/41-tess/matrices.sh new file mode 100644 index 00000000000..b52e5684640 --- /dev/null +++ b/3rdparty/bgfx/examples/41-tess/matrices.sh @@ -0,0 +1,68 @@ + + +//I decided to keep the non square matrices definition in the example, since I am still not sure how non square matrices should be treated in bgfx (Daniel Gavin) + +#ifndef MATRICES_H_HEADER_GUARD +#define MATRICES_H_HEADER_GUARD + +#ifndef __cplusplus + +#if BGFX_SHADER_LANGUAGE_HLSL || BGFX_SHADER_LANGUAGE_PSSL || BGFX_SHADER_LANGUAGE_SPIRV || BGFX_SHADER_LANGUAGE_METAL + +# define mat3x4 float4x3 +# define mat4x3 float3x4 + +#else + + +#endif // BGFX_SHADER_LANGUAGE_* + +mat4x3 mtxFromRows(vec4 _0, vec4 _1, vec4 _2) +{ +#if BGFX_SHADER_LANGUAGE_GLSL + return transpose(mat3x4(_0, _1, _2) ); +#else + return mat4x3(_0, _1, _2); +#endif // BGFX_SHADER_LANGUAGE_GLSL +} + +vec4 mtxGetRow(mat4x3 _0, uint row) +{ +#if BGFX_SHADER_LANGUAGE_GLSL + return vec4(_0[0][row], _0[1][row], _0[2][row], _0[3][row]); +#else + return vec4(_0[row]); +#endif // BGFX_SHADER_LANGUAGE_GLSL +} + +vec4 mtxGetRow(mat4 _0, uint row) +{ +#if BGFX_SHADER_LANGUAGE_GLSL + return vec4(_0[0][row], _0[1][row], _0[2][row], _0[3][row]); +#else + return vec4(_0[row]); +#endif // BGFX_SHADER_LANGUAGE_GLSL +} + +vec4 mtxGetColumn(mat4 _0, uint column) +{ +#if BGFX_SHADER_LANGUAGE_GLSL + return vec4(_0[column]); +#else + return vec4(_0[0][column], _0[1][column], _0[2][column], _0[3][column]); +#endif // BGFX_SHADER_LANGUAGE_GLSL +} + +float mtxGetElement(mat4 _0, uint column, uint row) +{ +#if BGFX_SHADER_LANGUAGE_GLSL + return _0[column][row]; +#else + return _0[row][column]; +#endif // BGFX_SHADER_LANGUAGE_GLSL +} + + +#endif // __cplusplus + +#endif // MATRICES_H_HEADER_GUARD |