@@ -895,6 +895,17 @@ struct LLPanelFaceSetAlignedTEFunctor : public LLSelectedTEFunctor
895895 // Also handle PBR materials if selected
896896 if (mUsePBR )
897897 {
898+ LLVector2 pbr_scale, pbr_offset;
899+ F32 pbr_rotation;
900+
901+ LLGLTFMaterial::convertTextureTransformToPBR (
902+ uv_scale.mV [VX], uv_scale.mV [VY],
903+ uv_offset.mV [VX], uv_offset.mV [VY],
904+ uv_rot,
905+ pbr_scale,
906+ pbr_offset,
907+ pbr_rotation);
908+
898909 LLGLTFMaterial new_override;
899910 const LLTextureEntry* tep = object->getTE (te);
900911 if (tep && tep->getGLTFMaterialOverride ())
@@ -908,21 +919,17 @@ struct LLPanelFaceSetAlignedTEFunctor : public LLSelectedTEFunctor
908919 // Align all 4 PBR texture channels
909920 for (U32 i = 0 ; i < LLGLTFMaterial::GLTF_TEXTURE_INFO_COUNT; ++i)
910921 {
911- new_override.mTextureTransform [i].mScale .mV [VX] = uv_scale.mV [VX];
912- new_override.mTextureTransform [i].mScale .mV [VY] = uv_scale.mV [VY];
913- new_override.mTextureTransform [i].mRotation = uv_rot;
914- new_override.mTextureTransform [i].mOffset .mV [VX] = uv_offset.mV [VX];
915- new_override.mTextureTransform [i].mOffset .mV [VY] = uv_offset.mV [VY];
922+ new_override.mTextureTransform [i].mScale = pbr_scale;
923+ new_override.mTextureTransform [i].mRotation = pbr_rotation;
924+ new_override.mTextureTransform [i].mOffset = pbr_offset;
916925 }
917926 }
918927 else
919928 {
920929 // Align only the selected channel
921- new_override.mTextureTransform [mPBRChannel ].mScale .mV [VX] = uv_scale.mV [VX];
922- new_override.mTextureTransform [mPBRChannel ].mScale .mV [VY] = uv_scale.mV [VY];
923- new_override.mTextureTransform [mPBRChannel ].mRotation = uv_rot;
924- new_override.mTextureTransform [mPBRChannel ].mOffset .mV [VX] = uv_offset.mV [VX];
925- new_override.mTextureTransform [mPBRChannel ].mOffset .mV [VY] = uv_offset.mV [VY];
930+ new_override.mTextureTransform [mPBRChannel ].mScale = pbr_scale;
931+ new_override.mTextureTransform [mPBRChannel ].mRotation = pbr_rotation;
932+ new_override.mTextureTransform [mPBRChannel ].mOffset = pbr_offset;
926933 }
927934
928935 LLGLTFMaterialList::queueModify (object, te, &new_override);
@@ -973,7 +980,10 @@ struct LLPanelFaceSetAlignedConcreteTEFunctor : public LLSelectedTEFunctor
973980 {
974981 LLVector2 uv_offset, uv_scale;
975982 F32 uv_rot;
976- if (facep->calcAlignedPlanarTE (mChefFace , &uv_offset, &uv_scale, &uv_rot, mMap ))
983+
984+ LLRender::eTexIndex calc_map = (mMap == LLRender::NUM_TEXTURE_CHANNELS) ? LLRender::DIFFUSE_MAP : mMap ;
985+
986+ if (facep->calcAlignedPlanarTE (mChefFace , &uv_offset, &uv_scale, &uv_rot, calc_map))
977987 {
978988 switch (mMap )
979989 {
@@ -996,6 +1006,43 @@ struct LLPanelFaceSetAlignedConcreteTEFunctor : public LLSelectedTEFunctor
9961006 LLPanelFace::LLSelectedTEMaterial::setSpecularRepeatX (mPanel , uv_scale.mV [VX], te, object->getID ());
9971007 LLPanelFace::LLSelectedTEMaterial::setSpecularRepeatY (mPanel , uv_scale.mV [VY], te, object->getID ());
9981008 break ;
1009+ // convert Blinn-Phong coords to PBR coords
1010+ case LLRender::NUM_TEXTURE_CHANNELS:
1011+ {
1012+ LLVector2 pbr_scale, pbr_offset;
1013+ F32 pbr_rotation;
1014+
1015+ LLGLTFMaterial::convertTextureTransformToPBR (
1016+ uv_scale.mV [VX], uv_scale.mV [VY],
1017+ uv_offset.mV [VX], uv_offset.mV [VY],
1018+ uv_rot,
1019+ pbr_scale,
1020+ pbr_offset,
1021+ pbr_rotation);
1022+
1023+ const LLTextureEntry* tep = object->getTE (te);
1024+ if (!tep)
1025+ {
1026+ break ;
1027+ }
1028+
1029+ LLGLTFMaterial new_override;
1030+ const LLGLTFMaterial* existing_override = tep->getGLTFMaterialOverride ();
1031+ if (existing_override)
1032+ {
1033+ new_override = *existing_override;
1034+ }
1035+
1036+ for (U32 i = 0 ; i < LLGLTFMaterial::GLTF_TEXTURE_INFO_COUNT; ++i)
1037+ {
1038+ new_override.mTextureTransform [i].mOffset = pbr_offset;
1039+ new_override.mTextureTransform [i].mScale = pbr_scale;
1040+ new_override.mTextureTransform [i].mRotation = pbr_rotation;
1041+ }
1042+
1043+ LLGLTFMaterialList::queueModify (object, te, &new_override);
1044+ }
1045+ break ;
9991046 default : /* make compiler happy*/
10001047 break ;
10011048 }
@@ -1124,6 +1171,11 @@ void LLPanelFace::alignTextureLayer()
11241171 LLGLTFMaterial::TextureInfo texture_info = getPBRTextureInfo ();
11251172 LLPanelFaceSetAlignedTEFunctor setfunc (this , last_face, true , texture_info);
11261173 LLSelectMgr::getInstance ()->getSelection ()->applyToTEs (&setfunc);
1174+
1175+ LLGLTFMaterialList::flushUpdates ();
1176+
1177+ LLPanelFaceSendFunctor sendfunc;
1178+ LLSelectMgr::getInstance ()->getSelection ()->applyToObjects (&sendfunc);
11271179 }
11281180 else
11291181 {
0 commit comments