summaryrefslogtreecommitdiff
path: root/indra/llrender
diff options
context:
space:
mode:
authorCosmic Linden <cosmic@lindenlab.com>2023-02-24 13:53:55 -0800
committerCosmic Linden <cosmic@lindenlab.com>2023-02-24 13:53:55 -0800
commit33085b9d830ac1db280d678760b3972798aa1129 (patch)
tree201019101a92305f22980537b8c5ab4390c9611c /indra/llrender
parenta7ecfc9b1907d6ecd5fe50aeb1c41e38540b2665 (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.cpp20
-rw-r--r--indra/llrender/llshadermgr.h18
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"