From e29be87bd29f7e232b59119c0a3c7d20cafb703c Mon Sep 17 00:00:00 2001 From: bkaradzic Date: Wed, 14 May 2014 20:57:37 -0700 Subject: [PATCH] Cleanup. --- examples/13-stencil/stencil.cpp | 39 ++------- examples/14-shadowvolumes/shadowvolumes.cpp | 33 +------ .../shadowmaps_simple.cpp | 38 +-------- examples/16-shadowmaps/shadowmaps.cpp | 41 ++------- examples/18-ibl/ibl.cpp | 31 +------ examples/common/fpumath.h | 85 +++++++++++++------ 6 files changed, 77 insertions(+), 190 deletions(-) diff --git a/examples/13-stencil/stencil.cpp b/examples/13-stencil/stencil.cpp index a709b3f9..7f948305 100644 --- a/examples/13-stencil/stencil.cpp +++ b/examples/13-stencil/stencil.cpp @@ -206,35 +206,6 @@ static bgfx::ProgramHandle loadProgram(const char* _vsName, const char* _fsName) return bgfx::createProgram(vsh, fsh, true /* destroy shaders when program is destroyed */); } -void mtxScaleRotateTranslate(float* _result - , const float _scaleX - , const float _scaleY - , const float _scaleZ - , const float _rotX - , const float _rotY - , const float _rotZ - , const float _translateX - , const float _translateY - , const float _translateZ - ) -{ - float mtxRotateTranslate[16]; - float mtxScale[16]; - - mtxRotateXYZ(mtxRotateTranslate, _rotX, _rotY, _rotZ); - mtxRotateTranslate[12] = _translateX; - mtxRotateTranslate[13] = _translateY; - mtxRotateTranslate[14] = _translateZ; - - memset(mtxScale, 0, sizeof(float)*16); - mtxScale[0] = _scaleX; - mtxScale[5] = _scaleY; - mtxScale[10] = _scaleZ; - mtxScale[15] = 1.0f; - - mtxMul(_result, mtxScale, mtxRotateTranslate); -} - void mtxReflected(float*__restrict _result , const float* __restrict _p /* plane */ , const float* __restrict _n /* normal */ @@ -1136,7 +1107,7 @@ int _main_(int /*_argc*/, char** /*_argv*/) // Floor position. float floorMtx[16]; - mtxScaleRotateTranslate(floorMtx + mtxSRT(floorMtx , 20.0f //scaleX , 20.0f //scaleY , 20.0f //scaleZ @@ -1150,7 +1121,7 @@ int _main_(int /*_argc*/, char** /*_argv*/) // Bunny position. float bunnyMtx[16]; - mtxScaleRotateTranslate(bunnyMtx + mtxSRT(bunnyMtx , 5.0f , 5.0f , 5.0f @@ -1175,7 +1146,7 @@ int _main_(int /*_argc*/, char** /*_argv*/) float columnMtx[4][16]; for (uint8_t ii = 0; ii < 4; ++ii) { - mtxScaleRotateTranslate(columnMtx[ii] + mtxSRT(columnMtx[ii] , 1.0f , 1.0f , 1.0f @@ -1192,7 +1163,7 @@ int _main_(int /*_argc*/, char** /*_argv*/) float cubeMtx[numCubes][16]; for (uint16_t ii = 0; ii < numCubes; ++ii) { - mtxScaleRotateTranslate(cubeMtx[ii] + mtxSRT(cubeMtx[ii] , 1.0f , 1.0f , 1.0f @@ -1443,7 +1414,7 @@ int _main_(int /*_argc*/, char** /*_argv*/) // Draw floor bottom. float floorBottomMtx[16]; - mtxScaleRotateTranslate(floorBottomMtx + mtxSRT(floorBottomMtx , 20.0f //scaleX , 20.0f //scaleY , 20.0f //scaleZ diff --git a/examples/14-shadowvolumes/shadowvolumes.cpp b/examples/14-shadowvolumes/shadowvolumes.cpp index 44bc9ed8..1eee83c3 100644 --- a/examples/14-shadowvolumes/shadowvolumes.cpp +++ b/examples/14-shadowvolumes/shadowvolumes.cpp @@ -176,35 +176,6 @@ static bgfx::ProgramHandle loadProgram(const char* _vsName, const char* _fsName) return bgfx::createProgram(vsh, fsh, true /* destroy shaders when program is destroyed */); } -void mtxScaleRotateTranslate(float* _result - , const float _scaleX - , const float _scaleY - , const float _scaleZ - , const float _rotX - , const float _rotY - , const float _rotZ - , const float _translateX - , const float _translateY - , const float _translateZ - ) -{ - float mtxRotateTranslate[16]; - float mtxScale[16]; - - mtxRotateXYZ(mtxRotateTranslate, _rotX, _rotY, _rotZ); - mtxRotateTranslate[12] = _translateX; - mtxRotateTranslate[13] = _translateY; - mtxRotateTranslate[14] = _translateZ; - - memset(mtxScale, 0, 16*sizeof(float) ); - mtxScale[0] = _scaleX; - mtxScale[5] = _scaleY; - mtxScale[10] = _scaleZ; - mtxScale[15] = 1.0f; - - mtxMul(_result, mtxScale, mtxRotateTranslate); -} - void mtxBillboard(float* __restrict _result , const float* __restrict _view , const float* __restrict _pos @@ -1277,7 +1248,7 @@ struct Instance memcpy(s_uniforms.m_color, m_color, 3*sizeof(float) ); float mtx[16]; - mtxScaleRotateTranslate(mtx + mtxSRT(mtx , m_scale[0] , m_scale[1] , m_scale[2] @@ -2734,7 +2705,7 @@ int _main_(int /*_argc*/, char** /*_argv*/) // Compute transform for shadow volume. float shadowVolumeMtx[16]; - mtxScaleRotateTranslate(shadowVolumeMtx + mtxSRT(shadowVolumeMtx , instance.m_scale[0] , instance.m_scale[1] , instance.m_scale[2] diff --git a/examples/15-shadowmaps-simple/shadowmaps_simple.cpp b/examples/15-shadowmaps-simple/shadowmaps_simple.cpp index 5eff3bdb..15429c39 100644 --- a/examples/15-shadowmaps-simple/shadowmaps_simple.cpp +++ b/examples/15-shadowmaps-simple/shadowmaps_simple.cpp @@ -54,7 +54,6 @@ struct PosNormalVertex uint32_t m_normal; }; -static const float s_texcoord = 5.0f; static const uint32_t s_numHPlaneVertices = 4; static PosNormalVertex s_hplaneVertices[s_numHPlaneVertices] = { @@ -133,35 +132,6 @@ static bgfx::ProgramHandle loadProgram(const char* _vsName, const char* _fsName) return bgfx::createProgram(vsh, fsh, true /* destroy shaders when program is destroyed */); } -void mtxScaleRotateTranslate(float* _result - , const float _scaleX - , const float _scaleY - , const float _scaleZ - , const float _rotX - , const float _rotY - , const float _rotZ - , const float _translateX - , const float _translateY - , const float _translateZ - ) -{ - float mtxRotateTranslate[16]; - float mtxScale[16]; - - mtxRotateXYZ(mtxRotateTranslate, _rotX, _rotY, _rotZ); - mtxRotateTranslate[12] = _translateX; - mtxRotateTranslate[13] = _translateY; - mtxRotateTranslate[14] = _translateZ; - - memset(mtxScale, 0, sizeof(float)*16); - mtxScale[0] = _scaleX; - mtxScale[5] = _scaleY; - mtxScale[10] = _scaleZ; - mtxScale[15] = 1.0f; - - mtxMul(_result, mtxScale, mtxRotateTranslate); -} - struct Aabb { float m_min[3]; @@ -556,28 +526,28 @@ int _main_(int /*_argc*/, char** /*_argv*/) // Setup instance matrices. float mtxFloor[16]; - mtxScaleRotateTranslate(mtxFloor + mtxSRT(mtxFloor , 30.0f, 30.0f, 30.0f , 0.0f, 0.0f, 0.0f , 0.0f, 0.0f, 0.0f ); float mtxBunny[16]; - mtxScaleRotateTranslate(mtxBunny + mtxSRT(mtxBunny , 5.0f, 5.0f, 5.0f , 0.0f, float(M_PI) - timeAccumulatorScene, 0.0f , 15.0f, 5.0f, 0.0f ); float mtxHollowcube[16]; - mtxScaleRotateTranslate(mtxHollowcube + mtxSRT(mtxHollowcube , 2.5f, 2.5f, 2.5f , 0.0f, 1.56f - timeAccumulatorScene, 0.0f , 0.0f, 10.0f, 0.0f ); float mtxCube[16]; - mtxScaleRotateTranslate(mtxCube + mtxSRT(mtxCube , 2.5f, 2.5f, 2.5f , 0.0f, 1.56f - timeAccumulatorScene, 0.0f , -15.0f, 5.0f, 0.0f diff --git a/examples/16-shadowmaps/shadowmaps.cpp b/examples/16-shadowmaps/shadowmaps.cpp index c8f8b271..ae373853 100644 --- a/examples/16-shadowmaps/shadowmaps.cpp +++ b/examples/16-shadowmaps/shadowmaps.cpp @@ -323,35 +323,6 @@ static bgfx::ProgramHandle loadProgram(const char* _vsName, const char* _fsName) return bgfx::createProgram(vsh, fsh, true /* destroy shaders when program is destroyed */); } -void mtxScaleRotateTranslate(float* _result - , const float _scaleX - , const float _scaleY - , const float _scaleZ - , const float _rotX - , const float _rotY - , const float _rotZ - , const float _translateX - , const float _translateY - , const float _translateZ - ) -{ - float mtxRotateTranslate[16]; - float mtxScale[16]; - - mtxRotateXYZ(mtxRotateTranslate, _rotX, _rotY, _rotZ); - mtxRotateTranslate[12] = _translateX; - mtxRotateTranslate[13] = _translateY; - mtxRotateTranslate[14] = _translateZ; - - memset(mtxScale, 0, sizeof(float)*16); - mtxScale[0] = _scaleX; - mtxScale[5] = _scaleY; - mtxScale[10] = _scaleZ; - mtxScale[15] = 1.0f; - - mtxMul(_result, mtxScale, mtxRotateTranslate); -} - void mtxBillboard(float* __restrict _result , const float* __restrict _view , const float* __restrict _pos @@ -2322,7 +2293,7 @@ int _main_(int /*_argc*/, char** /*_argv*/) // Setup instance matrices. float mtxFloor[16]; const float floorScale = 550.0f; - mtxScaleRotateTranslate(mtxFloor + mtxSRT(mtxFloor , floorScale //scaleX , floorScale //scaleY , floorScale //scaleZ @@ -2335,7 +2306,7 @@ int _main_(int /*_argc*/, char** /*_argv*/) ); float mtxBunny[16]; - mtxScaleRotateTranslate(mtxBunny + mtxSRT(mtxBunny , 5.0f , 5.0f , 5.0f @@ -2348,7 +2319,7 @@ int _main_(int /*_argc*/, char** /*_argv*/) ); float mtxHollowcube[16]; - mtxScaleRotateTranslate(mtxHollowcube + mtxSRT(mtxHollowcube , 2.5f , 2.5f , 2.5f @@ -2361,7 +2332,7 @@ int _main_(int /*_argc*/, char** /*_argv*/) ); float mtxCube[16]; - mtxScaleRotateTranslate(mtxCube + mtxSRT(mtxCube , 2.5f , 2.5f , 2.5f @@ -2377,7 +2348,7 @@ int _main_(int /*_argc*/, char** /*_argv*/) float mtxTrees[numTrees][16]; for (uint8_t ii = 0; ii < numTrees; ++ii) { - mtxScaleRotateTranslate(mtxTrees[ii] + mtxSRT(mtxTrees[ii] , 2.0f , 2.0f , 2.0f @@ -3185,7 +3156,7 @@ int _main_(int /*_argc*/, char** /*_argv*/) // Draw floor bottom. float floorBottomMtx[16]; - mtxScaleRotateTranslate(floorBottomMtx + mtxSRT(floorBottomMtx , floorScale //scaleX , floorScale //scaleY , floorScale //scaleZ diff --git a/examples/18-ibl/ibl.cpp b/examples/18-ibl/ibl.cpp index 8e15ce74..92edc944 100644 --- a/examples/18-ibl/ibl.cpp +++ b/examples/18-ibl/ibl.cpp @@ -380,35 +380,6 @@ void screenSpaceQuad(float _textureWidth, float _textureHeight, bool _originBott } } -void mtxScaleRotateTranslate(float* _result - , const float _scaleX - , const float _scaleY - , const float _scaleZ - , const float _rotX - , const float _rotY - , const float _rotZ - , const float _translateX - , const float _translateY - , const float _translateZ - ) -{ - float mtxRotateTranslate[16]; - float mtxScale[16]; - - mtxRotateXYZ(mtxRotateTranslate, _rotX, _rotY, _rotZ); - mtxRotateTranslate[12] = _translateX; - mtxRotateTranslate[13] = _translateY; - mtxRotateTranslate[14] = _translateZ; - - memset(mtxScale, 0, sizeof(float)*16); - mtxScale[0] = _scaleX; - mtxScale[5] = _scaleY; - mtxScale[10] = _scaleZ; - mtxScale[15] = 1.0f; - - mtxMul(_result, mtxScale, mtxRotateTranslate); -} - void imguiBool(const char* _str, bool& _flag, bool _enabled = true) { if (imguiCheck(_str, _flag, _enabled) ) @@ -778,7 +749,7 @@ int _main_(int /*_argc*/, char** /*_argv*/) // View 1. float mtx[16]; - mtxScaleRotateTranslate(mtx + mtxSRT(mtx , 1.0f , 1.0f , 1.0f diff --git a/examples/common/fpumath.h b/examples/common/fpumath.h index 33ff8f18..d809d837 100644 --- a/examples/common/fpumath.h +++ b/examples/common/fpumath.h @@ -196,10 +196,10 @@ inline void mtxLookAt(float* __restrict _result, const float* __restrict _eye, c inline void mtxProj(float* _result, float _fovy, float _aspect, float _near, float _far) { - float height = 1.0f/tanf(_fovy*( (float)M_PI/180.0f)*0.5f); - float width = height * 1.0f/_aspect; - float aa = _far/(_far-_near); - float bb = -_near * aa; + const float height = 1.0f/tanf(_fovy*( (float)M_PI/180.0f)*0.5f); + const float width = height * 1.0f/_aspect; + const float aa = _far/(_far-_near); + const float bb = -_near * aa; memset(_result, 0, sizeof(float)*16); _result[0] = width; @@ -230,8 +230,8 @@ inline void mtxOrtho(float* _result, float _left, float _right, float _bottom, f inline void mtxRotateX(float* _result, float _ax) { - float sx = sinf(_ax); - float cx = cosf(_ax); + const float sx = sinf(_ax); + const float cx = cosf(_ax); memset(_result, 0, sizeof(float)*16); _result[ 0] = 1.0f; @@ -244,8 +244,8 @@ inline void mtxRotateX(float* _result, float _ax) inline void mtxRotateY(float* _result, float _ay) { - float sy = sinf(_ay); - float cy = cosf(_ay); + const float sy = sinf(_ay); + const float cy = cosf(_ay); memset(_result, 0, sizeof(float)*16); _result[ 0] = cy; @@ -258,8 +258,8 @@ inline void mtxRotateY(float* _result, float _ay) inline void mtxRotateZ(float* _result, float _az) { - float sz = sinf(_az); - float cz = cosf(_az); + const float sz = sinf(_az); + const float cz = cosf(_az); memset(_result, 0, sizeof(float)*16); _result[ 0] = cz; @@ -272,10 +272,10 @@ inline void mtxRotateZ(float* _result, float _az) inline void mtxRotateXY(float* _result, float _ax, float _ay) { - float sx = sinf(_ax); - float cx = cosf(_ax); - float sy = sinf(_ay); - float cy = cosf(_ay); + const float sx = sinf(_ax); + const float cx = cosf(_ax); + const float sy = sinf(_ay); + const float cy = cosf(_ay); memset(_result, 0, sizeof(float)*16); _result[ 0] = cy; @@ -291,12 +291,12 @@ inline void mtxRotateXY(float* _result, float _ax, float _ay) inline void mtxRotateXYZ(float* _result, float _ax, float _ay, float _az) { - float sx = sinf(_ax); - float cx = cosf(_ax); - float sy = sinf(_ay); - float cy = cosf(_ay); - float sz = sinf(_az); - float cz = cosf(_az); + const float sx = sinf(_ax); + const float cx = cosf(_ax); + const float sy = sinf(_ay); + const float cy = cosf(_ay); + const float sz = sinf(_az); + const float cz = cosf(_az); memset(_result, 0, sizeof(float)*16); _result[ 0] = cy*cz; @@ -313,12 +313,12 @@ inline void mtxRotateXYZ(float* _result, float _ax, float _ay, float _az) inline void mtxRotateZYX(float* _result, float _ax, float _ay, float _az) { - float sx = sinf(_ax); - float cx = cosf(_ax); - float sy = sinf(_ay); - float cy = cosf(_ay); - float sz = sinf(_az); - float cz = cosf(_az); + const float sx = sinf(_ax); + const float cx = cosf(_ax); + const float sy = sinf(_ay); + const float cy = cosf(_ay); + const float sz = sinf(_az); + const float cz = cosf(_az); memset(_result, 0, sizeof(float)*16); _result[ 0] = cy*cz; @@ -333,6 +333,39 @@ inline void mtxRotateZYX(float* _result, float _ax, float _ay, float _az) _result[15] = 1.0f; }; +inline void mtxSRT(float* _result, float _sx, float _sy, float _sz, float _ax, float _ay, float _az, float _tx, float _ty, float _tz) +{ + const float sx = sinf(_ax); + const float cx = cosf(_ax); + const float sy = sinf(_ay); + const float cy = cosf(_ay); + const float sz = sinf(_az); + const float cz = cosf(_az); + + const float sxsz = sx*sz; + const float cycz = cy*cz; + + _result[ 0] = _sx * (cycz - sxsz*sy); + _result[ 1] = _sx * -cx*sz; + _result[ 2] = _sx * (cz*sy + cy*sxsz); + _result[ 3] = 0.0f; + + _result[ 4] = _sy * (cz*sx*sy + cy*sz); + _result[ 5] = _sy * cx*cz; + _result[ 6] = _sy * (sy*sz -cycz*sx); + _result[ 7] = 0.0f; + + _result[ 8] = _sz * -cx*sy; + _result[ 9] = _sz * sx; + _result[10] = _sz * cx*cy; + _result[11] = 0.0f; + + _result[12] = _tx; + _result[13] = _ty; + _result[14] = _tz; + _result[15] = 1.0f; +} + inline void vec3MulMtx(float* __restrict _result, const float* __restrict _vec, const float* __restrict _mat) { _result[0] = _vec[0] * _mat[ 0] + _vec[1] * _mat[4] + _vec[2] * _mat[ 8] + _mat[12];