diff options
author | Cosmic Linden <cosmic@lindenlab.com> | 2023-02-24 13:53:55 -0800 |
---|---|---|
committer | Cosmic Linden <cosmic@lindenlab.com> | 2023-02-24 13:53:55 -0800 |
commit | 33085b9d830ac1db280d678760b3972798aa1129 (patch) | |
tree | 201019101a92305f22980537b8c5ab4390c9611c /indra/llrender | |
parent | a7ecfc9b1907d6ecd5fe50aeb1c41e38540b2665 (diff) |
SL-19265: Fix precision issue with texture transforms by moving transform matrix calculation into the shader
Diffstat (limited to 'indra/llrender')
-rw-r--r-- | indra/llrender/llshadermgr.cpp | 20 | ||||
-rw-r--r-- | indra/llrender/llshadermgr.h | 18 |
2 files changed, 29 insertions, 9 deletions
diff --git a/indra/llrender/llshadermgr.cpp b/indra/llrender/llshadermgr.cpp index 13074032e0..c355115e8c 100644 --- a/indra/llrender/llshadermgr.cpp +++ b/indra/llrender/llshadermgr.cpp @@ -1073,11 +1073,21 @@ void LLShaderMgr::initAttribsAndUniforms() mReservedUniforms.push_back("texture_matrix3"); mReservedUniforms.push_back("object_plane_s"); mReservedUniforms.push_back("object_plane_t"); - mReservedUniforms.push_back("texture_basecolor_matrix"); // GLTF - mReservedUniforms.push_back("texture_normal_matrix"); // GLTF - mReservedUniforms.push_back("texture_metallic_roughness_matrix"); // GLTF - mReservedUniforms.push_back("texture_emissive_matrix"); // GLTF - llassert(mReservedUniforms.size() == LLShaderMgr::TEXTURE_EMISSIVE_MATRIX+1); + + mReservedUniforms.push_back("texture_base_color_scale"); // (GLTF) + mReservedUniforms.push_back("texture_base_color_rotation"); // (GLTF) + mReservedUniforms.push_back("texture_base_color_offset"); // (GLTF) + mReservedUniforms.push_back("texture_normal_scale"); // (GLTF) + mReservedUniforms.push_back("texture_normal_rotation"); // (GLTF) + mReservedUniforms.push_back("texture_normal_offset"); // (GLTF) + mReservedUniforms.push_back("texture_metallic_roughness_scale"); // (GLTF) + mReservedUniforms.push_back("texture_metallic_roughness_rotation"); // (GLTF) + mReservedUniforms.push_back("texture_metallic_roughness_offset"); // (GLTF) + mReservedUniforms.push_back("texture_emissive_scale"); // (GLTF) + mReservedUniforms.push_back("texture_emissive_rotation"); // (GLTF) + mReservedUniforms.push_back("texture_emissive_offset"); // (GLTF) + + llassert(mReservedUniforms.size() == LLShaderMgr::TEXTURE_EMISSIVE_OFFSET+1); mReservedUniforms.push_back("viewport"); diff --git a/indra/llrender/llshadermgr.h b/indra/llrender/llshadermgr.h index 3c8bef635a..f7439a65af 100644 --- a/indra/llrender/llshadermgr.h +++ b/indra/llrender/llshadermgr.h @@ -52,10 +52,20 @@ public: TEXTURE_MATRIX3, // "texture_matrix3" OBJECT_PLANE_S, // "object_plane_s" OBJECT_PLANE_T, // "object_plane_t" - TEXTURE_BASECOLOR_MATRIX, // "texture_basecolor_matrix" (GLTF) - TEXTURE_NORMAL_MATRIX, // "texture_normal_matrix" (GLTF) - TEXTURE_METALLIC_ROUGHNESS_MATRIX, // "texture_metallic_roughness_matrix" (GLTF) - TEXTURE_EMISSIVE_MATRIX, // "texture_emissive_matrix" (GLTF) + + TEXTURE_BASE_COLOR_SCALE, // "texture_base_color_scale" (GLTF) + TEXTURE_BASE_COLOR_ROTATION, // "texture_base_color_rotation" (GLTF) + TEXTURE_BASE_COLOR_OFFSET, // "texture_base_color_offset" (GLTF) + TEXTURE_NORMAL_SCALE, // "texture_normal_scale" (GLTF) + TEXTURE_NORMAL_ROTATION, // "texture_normal_rotation" (GLTF) + TEXTURE_NORMAL_OFFSET, // "texture_normal_offset" (GLTF) + TEXTURE_METALLIC_ROUGHNESS_SCALE, // "texture_metallic_roughness_scale" (GLTF) + TEXTURE_METALLIC_ROUGHNESS_ROTATION,// "texture_metallic_roughness_rotation" (GLTF) + TEXTURE_METALLIC_ROUGHNESS_OFFSET, // "texture_metallic_roughness_offset" (GLTF) + TEXTURE_EMISSIVE_SCALE, // "texture_emissive_scale" (GLTF) + TEXTURE_EMISSIVE_ROTATION, // "texture_emissive_rotation" (GLTF) + TEXTURE_EMISSIVE_OFFSET, // "texture_emissive_offset" (GLTF) + VIEWPORT, // "viewport" LIGHT_POSITION, // "light_position" LIGHT_DIRECTION, // "light_direction" |