diff options
author | RunitaiLinden <davep@lindenlab.com> | 2024-04-09 19:21:10 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-04-09 19:21:10 -0500 |
commit | b2a450a3087fb8393024876f6069a7cec9855bfd (patch) | |
tree | 05a08420a5f4797ad8ce4d63668d1bf688888704 /indra/newview/pipeline.cpp | |
parent | 5a47a3cb2366b9da9a595d37c88703497e111005 (diff) |
#1126 gltf scene import prototype (#1172)
* #1126 GLTF Scene import initial prototype (working geometry import for some assets)
* #1126 WIP -- Expand support for more vertex formats, PoC material import, shadow support, scale support
* #1126 move GLTF implementation to newview/gltf
* #1126 Refactor attribute loading to be less copy/pasta for each combination of types
* #1126 Partially working object selection. Ability to have multiple scenes at once. Helpful message on how to use the preview button.
* #1126 Add bounding box debug display and untangle GLTF raycast from LLVOVolume raycast
* #1126 Working raycast on GLTF scenes.
* #1126 Remove some #pragma optimize offs
Diffstat (limited to 'indra/newview/pipeline.cpp')
-rw-r--r-- | indra/newview/pipeline.cpp | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/indra/newview/pipeline.cpp b/indra/newview/pipeline.cpp index 85f4ccd86f..37bdcbf88c 100644 --- a/indra/newview/pipeline.cpp +++ b/indra/newview/pipeline.cpp @@ -112,6 +112,7 @@ #include "llscenemonitor.h" #include "llprogressview.h" #include "llcleanup.h" +#include "gltfscenemanager.h" #include "llenvironment.h" #include "llsettingsvo.h" @@ -4530,6 +4531,8 @@ void LLPipeline::renderDebug() } } + LL::GLTFSceneManager::instance().renderDebug(); + if (gPipeline.hasRenderDebugMask(LLPipeline::RENDER_DEBUG_OCCLUSION)) { //render visible selected group occlusion geometry gDebugProgram.bind(); @@ -6341,6 +6344,15 @@ LLViewerObject* LLPipeline::lineSegmentIntersectInWorld(const LLVector4a& start, } } } + + S32 node_hit = -1; + S32 primitive_hit = -1; + LLDrawable* hit = LL::GLTFSceneManager::instance().lineSegmentIntersect(start, local_end, pick_transparent, pick_rigged, pick_unselectable, pick_reflection_probe, &node_hit, &primitive_hit, &position, tex_coord, normal, tangent); + if (hit) + { + drawable = hit; + local_end = position; + } if (!sPickAvatar) { @@ -6557,6 +6569,11 @@ void LLPipeline::renderGLTFObjects(U32 type, bool texture, bool rigged) gGL.loadMatrix(gGLModelView); gGLLastMatrix = NULL; + + if (!rigged) + { + LL::GLTFSceneManager::instance().renderOpaque(); + } } // Currently only used for shadows -Cosmic,2023-04-19 |