SL-16993: Fix Model Upload Physics Analyze rendering physics hull as black mesh
parent
da6635702a
commit
bcd37186f1
|
|
@ -3285,6 +3285,14 @@ BOOL LLModelPreview::render()
|
|||
|
||||
if (!physics.mMesh.empty())
|
||||
{ //render hull instead of mesh
|
||||
// SL-16993 physics.mMesh[i].mNormals were being used to light the exploded
|
||||
// analyzed physics shape but the drawArrays() interface changed
|
||||
// causing normal data <0,0,0> to be passed to the shader.
|
||||
// The Phyics Preview shader uses plain vertex coloring so the physics hull is full lit.
|
||||
// We could also use interface/ui shaders.
|
||||
gObjectPreviewProgram.unbind();
|
||||
gPhysicsPreviewProgram.bind();
|
||||
|
||||
for (U32 i = 0; i < physics.mMesh.size(); ++i)
|
||||
{
|
||||
if (explode > 0.f)
|
||||
|
|
@ -3312,6 +3320,9 @@ BOOL LLModelPreview::render()
|
|||
gGL.popMatrix();
|
||||
}
|
||||
}
|
||||
|
||||
gPhysicsPreviewProgram.unbind();
|
||||
gObjectPreviewProgram.bind();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -102,6 +102,7 @@ LLGLSLShader gSkinnedObjectSimpleProgram;
|
|||
LLGLSLShader gObjectSimpleImpostorProgram;
|
||||
LLGLSLShader gSkinnedObjectSimpleImpostorProgram;
|
||||
LLGLSLShader gObjectPreviewProgram;
|
||||
LLGLSLShader gPhysicsPreviewProgram;
|
||||
LLGLSLShader gObjectSimpleWaterProgram;
|
||||
LLGLSLShader gSkinnedObjectSimpleWaterProgram;
|
||||
LLGLSLShader gObjectSimpleAlphaMaskProgram;
|
||||
|
|
@ -758,6 +759,7 @@ void LLViewerShaderMgr::unloadShaders()
|
|||
gObjectSimpleImpostorProgram.unload();
|
||||
gSkinnedObjectSimpleImpostorProgram.unload();
|
||||
gObjectPreviewProgram.unload();
|
||||
gPhysicsPreviewProgram.unload();
|
||||
gImpostorProgram.unload();
|
||||
gObjectSimpleAlphaMaskProgram.unload();
|
||||
gSkinnedObjectSimpleAlphaMaskProgram.unload();
|
||||
|
|
@ -3021,6 +3023,24 @@ BOOL LLViewerShaderMgr::loadShadersObject()
|
|||
gObjectPreviewProgram.mFeatures.hasLighting = true;
|
||||
}
|
||||
|
||||
if (success)
|
||||
{
|
||||
gPhysicsPreviewProgram.mName = "Preview Physics Shader";
|
||||
gPhysicsPreviewProgram.mFeatures.calculatesLighting = false;
|
||||
gPhysicsPreviewProgram.mFeatures.calculatesAtmospherics = false;
|
||||
gPhysicsPreviewProgram.mFeatures.hasGamma = false;
|
||||
gPhysicsPreviewProgram.mFeatures.hasAtmospherics = false;
|
||||
gPhysicsPreviewProgram.mFeatures.hasLighting = false;
|
||||
gPhysicsPreviewProgram.mFeatures.mIndexedTextureChannels = 0;
|
||||
gPhysicsPreviewProgram.mFeatures.disableTextureIndex = true;
|
||||
gPhysicsPreviewProgram.mShaderFiles.clear();
|
||||
gPhysicsPreviewProgram.mShaderFiles.push_back(make_pair("objects/previewPhysicsV.glsl", GL_VERTEX_SHADER_ARB));
|
||||
gPhysicsPreviewProgram.mShaderFiles.push_back(make_pair("objects/previewPhysicsF.glsl", GL_FRAGMENT_SHADER_ARB));
|
||||
gPhysicsPreviewProgram.mShaderLevel = mShaderLevel[SHADER_OBJECT];
|
||||
success = gPhysicsPreviewProgram.createShader(NULL, NULL);
|
||||
gPhysicsPreviewProgram.mFeatures.hasLighting = false;
|
||||
}
|
||||
|
||||
if (success)
|
||||
{
|
||||
gObjectSimpleProgram.mName = "Simple Shader";
|
||||
|
|
|
|||
|
|
@ -181,6 +181,7 @@ extern LLGLSLShader gOneTextureNoColorProgram;
|
|||
extern LLGLSLShader gObjectSimpleProgram;
|
||||
extern LLGLSLShader gObjectSimpleImpostorProgram;
|
||||
extern LLGLSLShader gObjectPreviewProgram;
|
||||
extern LLGLSLShader gPhysicsPreviewProgram;
|
||||
extern LLGLSLShader gObjectSimpleAlphaMaskProgram;
|
||||
extern LLGLSLShader gObjectSimpleWaterProgram;
|
||||
extern LLGLSLShader gObjectSimpleWaterAlphaMaskProgram;
|
||||
|
|
|
|||
Loading…
Reference in New Issue