summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCosmic Linden <cosmic@lindenlab.com>2023-10-06 11:08:44 -0700
committerCosmic Linden <cosmic@lindenlab.com>2023-10-06 11:08:44 -0700
commit7297f0270473c1c42dcd44741eb38b4d1e8c6ac6 (patch)
tree5323eb9e517e485da7b77e83dc0b97a08494a14a
parent85470fc4d29cb2fd7d168debdeed3544778592b8 (diff)
SL-20396: On second thought, just apply the whole Blinn-Phong transform stack to PBR, but only during texture animations
-rw-r--r--indra/newview/llvovolume.cpp107
1 files changed, 25 insertions, 82 deletions
diff --git a/indra/newview/llvovolume.cpp b/indra/newview/llvovolume.cpp
index f1d4d9039b..ec2f490742 100644
--- a/indra/newview/llvovolume.cpp
+++ b/indra/newview/llvovolume.cpp
@@ -619,8 +619,18 @@ void LLVOVolume::animateTextures()
continue;
}
- LLGLTFMaterial *gltf_mat = te->getGLTFRenderMaterial();
- const bool is_pbr = gltf_mat != nullptr;
+ if (!(result & LLViewerTextureAnim::ROTATE))
+ {
+ te->getRotation(&rot);
+ }
+ if (!(result & LLViewerTextureAnim::TRANSLATE))
+ {
+ te->getOffset(&off_s,&off_t);
+ }
+ if (!(result & LLViewerTextureAnim::SCALE))
+ {
+ te->getScale(&scale_s, &scale_t);
+ }
if (!facep->mTextureMatrix)
{
@@ -629,89 +639,22 @@ void LLVOVolume::animateTextures()
LLMatrix4& tex_mat = *facep->mTextureMatrix;
tex_mat.setIdentity();
+ LLVector3 trans ;
- if (!is_pbr)
- {
- if (!(result & LLViewerTextureAnim::ROTATE))
- {
- te->getRotation(&rot);
- }
- if (!(result & LLViewerTextureAnim::TRANSLATE))
- {
- te->getOffset(&off_s,&off_t);
- }
- if (!(result & LLViewerTextureAnim::SCALE))
- {
- te->getScale(&scale_s, &scale_t);
- }
-
- LLVector3 trans ;
-
- trans.set(LLVector3(off_s+0.5f, off_t+0.5f, 0.f));
- tex_mat.translate(LLVector3(-0.5f, -0.5f, 0.f));
-
- LLVector3 scale(scale_s, scale_t, 1.f);
- LLQuaternion quat;
- quat.setQuat(rot, 0, 0, -1.f);
-
- tex_mat.rotate(quat);
-
- LLMatrix4 mat;
- mat.initAll(scale, LLQuaternion(), LLVector3());
- tex_mat *= mat;
-
- tex_mat.translate(trans);
- }
- else
- {
- if (!(result & LLViewerTextureAnim::ROTATE))
- {
- if (result & LLViewerTextureAnim::TRANSLATE)
- {
- // The current LSL texture animation system is
- // based on Blinn-Phong texture transforms, which
- // is incompatible with the GLTF texture
- // transforms. As a compromise, apply Blinn-Phong
- // texture rotation on top of the GLTF texture
- // transforms during a translation animation. This
- // ensures that the animation loops for trivial
- // GLTF texture transforms, when it would for
- // similar Blinn-Phong animations. This is not
- // guaranteed to loop for nontrivial GLTF texture
- // transforms.
- te->getRotation(&rot);
- }
- else
- {
- rot = 0.0f;
- }
- }
- if (!(result & LLViewerTextureAnim::TRANSLATE))
- {
- off_s = 0.0f;
- off_t = 0.0f;
- }
- if (!(result & LLViewerTextureAnim::SCALE))
- {
- scale_s = 1.0f;
- scale_t = 1.0f;
- }
-
- tex_mat.translate(LLVector3(-0.5f, -0.5f, 0.f));
+ trans.set(LLVector3(off_s+0.5f, off_t+0.5f, 0.f));
+ tex_mat.translate(LLVector3(-0.5f, -0.5f, 0.f));
- LLQuaternion quat;
- quat.setQuat(rot, 0, 0, -1.f);
- tex_mat.rotate(quat);
-
- LLMatrix4 mat;
- LLVector3 scale(scale_s, scale_t, 1.f);
- mat.initAll(scale, LLQuaternion(), LLVector3());
- tex_mat *= mat;
+ LLVector3 scale(scale_s, scale_t, 1.f);
+ LLQuaternion quat;
+ quat.setQuat(rot, 0, 0, -1.f);
+
+ tex_mat.rotate(quat);
- LLVector3 trans;
- trans.set(LLVector3(off_s+0.5f, off_t+0.5f, 0.f));
- tex_mat.translate(trans);
- }
+ LLMatrix4 mat;
+ mat.initAll(scale, LLQuaternion(), LLVector3());
+ tex_mat *= mat;
+
+ tex_mat.translate(trans);
}
}
else