Remove simple avatar shadows for the time being since they are incompatible with upcoming rendering changes

meow-7.2.2
Ansariel 2018-08-22 09:57:33 +02:00
parent bb93127121
commit 5bba585362
7 changed files with 0 additions and 242 deletions

View File

@ -10,7 +10,6 @@
<string>FSLimitFramerate</string>
<string>FSRenderDoFUnderwater</string>
<string>FSRenderVignette</string>
<string>FSSimpleAvatarShadows</string>
<string>FullScreen</string>
<string>RenderAnisotropic</string>
<string>RenderAttachedLights</string>

View File

@ -24045,17 +24045,6 @@ Change of this parameter will affect the layout of buttons in notification toast
<key>Value</key>
<integer>13</integer>
</map>
<key>FSSimpleAvatarShadows</key>
<map>
<key>Comment</key>
<string>How to render deferred avatar shadows. 0=none, 1=simplified (no rigged mesh shadows), 2=optimized (slower but still faster than legacy when several avatars are around), 3=legacy (like the SL viewer, slow with complex rigged attachments).</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
<string>U32</string>
<key>Value</key>
<integer>3</integer>
</map>
<key>FSConfirmPayments</key>
<map>
<key>Comment</key>

View File

@ -488,14 +488,6 @@ void LLDrawPoolAvatar::renderShadow(S32 pass)
{
LL_RECORD_BLOCK_TIME(FTM_SHADOW_AVATAR);
// <FS:Ansariel> Chalice Yao's simple avatar shadows via Marine Kelley
static LLCachedControl<U32> fsSimpleAvatarShadows(gSavedSettings, "FSSimpleAvatarShadows", 3);
if (fsSimpleAvatarShadows == 0)
{
return;
}
// </FS:Ansariel>
if (mDrawFace.empty())
{
return;
@ -528,18 +520,6 @@ void LLDrawPoolAvatar::renderShadow(S32 pass)
{
avatarp->renderSkinned();
}
// <FS:Ansariel> Chalice Yao's simple avatar shadows via Marine Kelley
else if (fsSimpleAvatarShadows == 1)
{
// Don't render the shadow of anything that is rigged. Instead, force the shadow of the avatar shape to render instead.
// See LLVOAvatar::isTextureVisible() and LLVOAvatarSelf::isTextureVisible()
return;
}
else if (fsSimpleAvatarShadows == 2)
{
renderRiggedShadows(avatarp);
}
// </FS:Ansariel>
else
{
for (U32 i = 0; i < NUM_RIGGED_PASSES; ++i)
@ -2107,152 +2087,6 @@ void LLDrawPoolAvatar::renderRigged(LLVOAvatar* avatar, U32 type, bool glow)
}
}
// <FS:Ansariel> Chalice Yao's simple avatar shadows via Marine Kelley
void LLDrawPoolAvatar::renderRiggedShadows(LLVOAvatar* avatar)
{
if (avatar->isSelf() && !gAgent.needsRenderAvatar())
{
return;
}
stop_glerror();
U32 rigTypes[18] = { 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,21 };
for (U32 j = 0; j < 18; ++j)
for (U32 i = 0; i < mRiggedFace[rigTypes[j]].size(); ++i)
{
LLFace* face = mRiggedFace[rigTypes[j]][i];
LLDrawable* drawable = face->getDrawable();
if (!drawable)
{
continue;
}
LLVOVolume* vobj = drawable->getVOVolume();
if (!vobj)
{
continue;
}
LLVolume* volume = vobj->getVolume();
S32 te = face->getTEOffset();
if (!volume || volume->getNumVolumeFaces() <= te || !volume->isMeshAssetLoaded())
{
continue;
}
LLUUID mesh_id = volume->getParams().getSculptID();
if (mesh_id.isNull())
{
continue;
}
const LLMeshSkinInfo* skin = gMeshRepo.getSkinInfo(mesh_id, vobj);
if (!skin)
{
continue;
}
U32 data_mask = LLFace::getRiggedDataMask(24);
LLVertexBuffer* buff = face->getVertexBuffer();
if (buff)
{
if (sShaderLevel > 0)
{
// upload matrix palette to shader
LLMatrix4a mat[LL_MAX_JOINTS_PER_MESH_OBJECT];
U32 count = LLSkinningUtil::getMeshJointCount(skin);
LLSkinningUtil::initSkinningMatrixPalette((LLMatrix4*)mat, count, skin, avatar);
stop_glerror();
F32 mp[LL_MAX_JOINTS_PER_MESH_OBJECT*12];
for (U32 i = 0; i < count; ++i)
{
F32* m = (F32*)mat[i].mMatrix[0].getF32ptr();
U32 idx = i * 12;
mp[idx + 0] = m[0];
mp[idx + 1] = m[1];
mp[idx + 2] = m[2];
mp[idx + 3] = m[12];
mp[idx + 4] = m[4];
mp[idx + 5] = m[5];
mp[idx + 6] = m[6];
mp[idx + 7] = m[13];
mp[idx + 8] = m[8];
mp[idx + 9] = m[9];
mp[idx + 10] = m[10];
mp[idx + 11] = m[14];
}
LLDrawPoolAvatar::sVertexProgram->uniformMatrix3x4fv(LLViewerShaderMgr::AVATAR_MATRIX,
count,
FALSE,
(GLfloat*)mp);
stop_glerror();
}
else
{
data_mask &= ~LLVertexBuffer::MAP_WEIGHT4;
}
U16 start = face->getGeomStart();
U16 end = start + face->getGeomCount() - 1;
S32 offset = face->getIndicesStart();
U32 count = face->getIndicesCount();
if ((rigTypes[j] < 4) || (rigTypes[j] == 5) || (rigTypes[j] == 6) || (rigTypes[j] == 9) || (rigTypes[j] == 10) || (rigTypes[j] == 13) || (rigTypes[j] == 14) || (rigTypes[j] == 21))
{
gGL.getTexUnit(sDiffuseChannel)->bind(face->getTexture());
sVertexProgram->setMinimumAlpha(0.f);
if ((rigTypes[j] == 2) || (rigTypes[j] == 6) || (rigTypes[j] == 10) || (rigTypes[j] == 14))
{
const LLTextureEntry* te = face->getTextureEntry();
LLMaterial* mat = te->getMaterialParams().get();
if (mat)
if (mat->getDiffuseAlphaMode() == LLMaterial::DIFFUSE_ALPHA_MODE_MASK)
sVertexProgram->setMinimumAlpha(mat->getAlphaMaskCutoff() / 255.f);
}
if (face->mTextureMatrix && vobj->mTexAnimMode)
{
gGL.matrixMode(LLRender::MM_TEXTURE);
gGL.loadMatrix((F32*)face->mTextureMatrix->mMatrix);
buff->setBuffer(data_mask);
buff->drawRange(LLRender::TRIANGLES, start, end, count, offset);
gGL.loadIdentity();
gGL.matrixMode(LLRender::MM_MODELVIEW);
}
else
{
buff->setBuffer(data_mask);
buff->drawRange(LLRender::TRIANGLES, start, end, count, offset);
}
}
else
{
buff->setBuffer(data_mask);
buff->drawRange(LLRender::TRIANGLES, start, end, count, offset);
}
gPipeline.addTrianglesDrawn(count, LLRender::TRIANGLES);
}
}
}
// </FS:Ansariel>
void LLDrawPoolAvatar::renderDeferredRiggedSimple(LLVOAvatar* avatar)
{
renderRigged(avatar, RIGGED_DEFERRED_SIMPLE);

View File

@ -147,9 +147,6 @@ public:
void updateRiggedVertexBuffers(LLVOAvatar* avatar);
void renderRigged(LLVOAvatar* avatar, U32 type, bool glow = false);
// <FS:Ansariel> Chalice Yao's simple avatar shadows via Marine Kelley
void renderRiggedShadows(LLVOAvatar* avatar);
// </FS:Ansariel>
void renderRiggedSimple(LLVOAvatar* avatar);
void renderRiggedAlpha(LLVOAvatar* avatar);
void renderRiggedFullbrightAlpha(LLVOAvatar* avatar);

View File

@ -10502,17 +10502,6 @@ BOOL LLVOAvatar::isTextureVisible(LLAvatarAppearanceDefines::ETextureIndex type,
}
else
{
// <FS:Ansariel> Chalice Yao's simple avatar shadows via Marine Kelley
if (LLPipeline::sShadowRender)
{
static LLCachedControl<U32> fsSimpleAvatarShadows(gSavedSettings, "FSSimpleAvatarShadows", 3);
if (fsSimpleAvatarShadows == 1)
{
return TRUE;
}
}
// </FS:Ansariel>
// baked textures can use TE images directly
return ((isTextureDefined(type) || isSelf())
&& (getTEImage(type)->getID() != IMG_INVISIBLE

View File

@ -2041,17 +2041,6 @@ BOOL LLVOAvatarSelf::isTextureVisible(LLAvatarAppearanceDefines::ETextureIndex t
return LLVOAvatar::isTextureVisible(type, (U32)0);
}
// <FS:Ansariel> Chalice Yao's simple avatar shadows via Marine Kelley
if (LLPipeline::sShadowRender)
{
static LLCachedControl<U32> fsSimpleAvatarShadows(gSavedSettings, "FSSimpleAvatarShadows", 3);
if (fsSimpleAvatarShadows == 1)
{
return TRUE;
}
}
// </FS:Ansariel>
LLUUID tex_id = getLocalTextureID(type,index);
return (tex_id != IMG_INVISIBLE)
|| (LLDrawPoolAlpha::sShowDebugAlpha);

View File

@ -369,45 +369,6 @@
value="2"/>
</combo_box>
<text
type="string"
length="1"
top_pad="4"
follows="top|left"
height="12"
width="110"
word_wrap="true"
layout="topleft"
left_delta="-5"
name="avatar_shadows_label">
Avatar Shadows:
</text>
<combo_box
control_name="FSSimpleAvatarShadows"
height="23"
layout="topleft"
left_delta="5"
top_pad="3"
name="AvatarShadowDetail"
width="150">
<combo_box.item
label="None"
name="0"
value="0"/>
<combo_box.item
label="Simplified"
name="1"
value="1"/>
<combo_box.item
label="Optimized"
name="2"
value="2"/>
<combo_box.item
label="Complex"
name="3"
value="3"/>
</combo_box>
<text
type="string"
length="1"