summaryrefslogtreecommitdiff
path: root/indra
diff options
context:
space:
mode:
authorcosmic-linden <111533034+cosmic-linden@users.noreply.github.com>2023-10-10 14:20:30 -0700
committerGitHub <noreply@github.com>2023-10-10 14:20:30 -0700
commitf576fae46ce9e46963c311aca7f60fd785c0a1e9 (patch)
treea02feb946daf5b7873fab58c522a317811521503 /indra
parent7b2dfc4e826775017218100ee17b2afe2151da4c (diff)
parent7297f0270473c1c42dcd44741eb38b4d1e8c6ac6 (diff)
Merge pull request #419 from secondlife/SL-20396
SL-20396: Apply blinn-phong rotation to texture translation animations for GLTF materials
Diffstat (limited to 'indra')
-rw-r--r--indra/newview/llvovolume.cpp98
1 files changed, 25 insertions, 73 deletions
diff --git a/indra/newview/llvovolume.cpp b/indra/newview/llvovolume.cpp
index 468943423a..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,80 +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))
- {
- 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;
- }
-
- // For PBR materials, use Blinn-Phong rotation as hint for
- // translation direction. In a Blinn-Phong material, the
- // translation direction would be a byproduct the texture
- // transform.
- F32 rot_frame;
- te->getRotation(&rot_frame);
-
- tex_mat.translate(LLVector3(-0.5f, -0.5f, 0.f));
-
- LLQuaternion quat;
- quat.setQuat(rot, 0, 0, -1.f);
- tex_mat.rotate(quat);
+ trans.set(LLVector3(off_s+0.5f, off_t+0.5f, 0.f));
+ tex_mat.translate(LLVector3(-0.5f, -0.5f, 0.f));
- LLMatrix4 mat;
- LLVector3 scale(scale_s, scale_t, 1.f);
- mat.initAll(scale, LLQuaternion(), LLVector3());
- tex_mat *= mat;
-
- LLVector3 off(off_s, off_t, 0.f);
- off.rotVec(rot_frame, 0, 0, 1.f);
- tex_mat.translate(off);
+ LLVector3 scale(scale_s, scale_t, 1.f);
+ LLQuaternion quat;
+ quat.setQuat(rot, 0, 0, -1.f);
+
+ tex_mat.rotate(quat);
- tex_mat.translate(LLVector3(0.5f, 0.5f, 0.f));
- }
+ LLMatrix4 mat;
+ mat.initAll(scale, LLQuaternion(), LLVector3());
+ tex_mat *= mat;
+
+ tex_mat.translate(trans);
}
}
else