Showing the changes to libraries/render-utils/src/Model.cpp (1 of 1 file). Show all
Unified · Split
| @@ -82,7 +82,8 @@ Model::Model(QObject* parent) : · 81 unmodified lines | ||
| 82 | 82 | _appliedBlendNumber(0), |
| 83 | 83 | _calculatedMeshBoxesValid(false), |
| 84 | 84 | _calculatedMeshTrianglesValid(false), |
| 85 | − _meshGroupsKnown(false) { | |
| 85 | + _meshGroupsKnown(false), | |
| 86 | + _renderCollisionHull(false) { | |
| 86 | 87 | |
| 87 | 88 | // we may have been created in the network thread, but we live in the main thread |
| 88 | 89 | if (_viewState) { |
| @@ -712,13 +713,13 @@ bool Model::renderCore(float alpha, RenderMode mode, RenderArgs* args) { · 623 unmodified lines | ||
| 712 | 713 | { |
| 713 | 714 | GLenum buffers[3]; |
| 714 | 715 | int bufferCount = 0; |
| 715 | − if (mode == DEFAULT_RENDER_MODE || mode == DIFFUSE_RENDER_MODE) { | |
| 716 | + if (mode == DEFAULT_RENDER_MODE || mode == DIFFUSE_RENDER_MODE || mode == DEBUG_RENDER_MODE) { | |
| 716 | 717 | buffers[bufferCount++] = GL_COLOR_ATTACHMENT0; |
| 717 | 718 | } |
| 718 | − if (mode == DEFAULT_RENDER_MODE || mode == NORMAL_RENDER_MODE) { | |
| 719 | + if (mode == DEFAULT_RENDER_MODE || mode == NORMAL_RENDER_MODE || mode == DEBUG_RENDER_MODE) { | |
| 719 | 720 | buffers[bufferCount++] = GL_COLOR_ATTACHMENT1; |
| 720 | 721 | } |
| 721 | − if (mode == DEFAULT_RENDER_MODE) { | |
| 722 | + if (mode == DEFAULT_RENDER_MODE || mode == DEBUG_RENDER_MODE) { | |
| 722 | 723 | buffers[bufferCount++] = GL_COLOR_ATTACHMENT2; |
| 723 | 724 | } |
| 724 | 725 | GLBATCH(glDrawBuffers)(bufferCount, buffers); |
| @@ -777,7 +778,7 @@ bool Model::renderCore(float alpha, RenderMode mode, RenderArgs* args) { · 52 unmodified lines | ||
| 777 | 778 | GLBATCH(glDrawBuffers)(bufferCount, buffers); |
| 778 | 779 | } |
| 779 | 780 | |
| 780 | − if (mode == DEFAULT_RENDER_MODE || mode == DIFFUSE_RENDER_MODE) { | |
| 781 | + if (mode == DEFAULT_RENDER_MODE || mode == DIFFUSE_RENDER_MODE || mode == DEBUG_RENDER_MODE) { | |
| 781 | 782 | const float MOSTLY_TRANSPARENT_THRESHOLD = 0.0f; |
| 782 | 783 | translucentMeshPartsRendered += renderMeshes(batch, mode, true, MOSTLY_TRANSPARENT_THRESHOLD, false, false, false, false, args, true); |
| 783 | 784 | translucentMeshPartsRendered += renderMeshes(batch, mode, true, MOSTLY_TRANSPARENT_THRESHOLD, false, false, false, true, args, true); |
| @@ -1778,13 +1779,13 @@ void Model::endScene(RenderMode mode, RenderArgs* args) { · 994 unmodified lines | ||
| 1778 | 1779 | { |
| 1779 | 1780 | GLenum buffers[3]; |
| 1780 | 1781 | int bufferCount = 0; |
| 1781 | − if (mode == DEFAULT_RENDER_MODE || mode == DIFFUSE_RENDER_MODE) { | |
| 1782 | + if (mode == DEFAULT_RENDER_MODE || mode == DIFFUSE_RENDER_MODE || mode == DEBUG_RENDER_MODE) { | |
| 1782 | 1783 | buffers[bufferCount++] = GL_COLOR_ATTACHMENT0; |
| 1783 | 1784 | } |
| 1784 | − if (mode == DEFAULT_RENDER_MODE || mode == NORMAL_RENDER_MODE) { | |
| 1785 | + if (mode == DEFAULT_RENDER_MODE || mode == NORMAL_RENDER_MODE || mode == DEBUG_RENDER_MODE) { | |
| 1785 | 1786 | buffers[bufferCount++] = GL_COLOR_ATTACHMENT1; |
| 1786 | 1787 | } |
| 1787 | − if (mode == DEFAULT_RENDER_MODE) { | |
| 1788 | + if (mode == DEFAULT_RENDER_MODE || mode == DEBUG_RENDER_MODE) { | |
| 1788 | 1789 | buffers[bufferCount++] = GL_COLOR_ATTACHMENT2; |
| 1789 | 1790 | } |
| 1790 | 1791 | GLBATCH(glDrawBuffers)(bufferCount, buffers); |
| @@ -1843,7 +1844,7 @@ void Model::endScene(RenderMode mode, RenderArgs* args) { · 52 unmodified lines | ||
| 1843 | 1844 | GLBATCH(glDrawBuffers)(bufferCount, buffers); |
| 1844 | 1845 | } |
| 1845 | 1846 | |
| 1846 | − if (mode == DEFAULT_RENDER_MODE || mode == DIFFUSE_RENDER_MODE) { | |
| 1847 | + if (mode == DEFAULT_RENDER_MODE || mode == DIFFUSE_RENDER_MODE || mode == DEBUG_RENDER_MODE) { | |
| 1847 | 1848 | const float MOSTLY_TRANSPARENT_THRESHOLD = 0.0f; |
| 1848 | 1849 | translucentParts += renderMeshesForModelsInScene(batch, mode, true, MOSTLY_TRANSPARENT_THRESHOLD, false, false, false, false, args); |
| 1849 | 1850 | translucentParts += renderMeshesForModelsInScene(batch, mode, true, MOSTLY_TRANSPARENT_THRESHOLD, false, false, false, true, args); |
| @@ -1919,6 +1920,22 @@ bool Model::renderInScene(float alpha, RenderArgs* args) { · 69 unmodified lines | ||
| 1919 | 1920 | if (_meshStates.isEmpty()) { |
| 1920 | 1921 | return false; |
| 1921 | 1922 | } |
| 1923 | + | |
| 1924 | + if (args->_renderMode == RenderArgs::DEBUG_RENDER_MODE && _renderCollisionHull == false) { | |
| 1925 | + qDebug() << "turning collision hull rendering on"; | |
| 1926 | + _renderCollisionHull = true; | |
| 1927 | + _nextGeometry = _collisionGeometry; | |
| 1928 | + _saveNonCollisionGeometry = _geometry; | |
| 1929 | + updateGeometry(); | |
| 1930 | + simulate(0.0, true); | |
| 1931 | + } else if (args->_renderMode != RenderArgs::DEBUG_RENDER_MODE && _renderCollisionHull == true) { | |
| 1932 | + qDebug() << "turning collision hull rendering off"; | |
| 1933 | + _renderCollisionHull = false; | |
| 1934 | + _nextGeometry = _saveNonCollisionGeometry; | |
| 1935 | + updateGeometry(); | |
| 1936 | + simulate(0.0, true); | |
| 1937 | + } | |
| 1938 | + | |
| 1922 | 1939 | renderSetup(args); |
| 1923 | 1940 | _modelsInScene.push_back(this); |
| 1924 | 1941 | return true; |
| @@ -2402,8 +2419,9 @@ int Model::renderMeshes(gpu::Batch& batch, RenderMode mode, bool translucent, fl · 477 unmodified lines | ||
| 2402 | 2419 | } |
| 2403 | 2420 | |
| 2404 | 2421 | |
| 2405 | −int Model::renderMeshesFromList(QVector<int>& list, gpu::Batch& batch, RenderMode mode, bool translucent, float alphaThreshold, RenderArgs* args, | |
| 2406 | − Locations* locations, SkinLocations* skinLocations, bool forceRenderMeshes) { | |
| 2422 | +int Model::renderMeshesFromList(QVector<int>& list, gpu::Batch& batch, RenderMode mode, bool translucent, | |
| 2423 | + float alphaThreshold, RenderArgs* args, Locations* locations, SkinLocations* skinLocations, | |
| 2424 | + bool forceRenderMeshes) { | |
| 2407 | 2425 | PROFILE_RANGE(__FUNCTION__); |
| 2408 | 2426 | |
| 2409 | 2427 | auto textureCache = DependencyManager::get<TextureCache>(); |