Hiden model elements are being Shadowed
by Edward Smith · in Torque Game Engine Advanced · 09/23/2006 (10:06 pm) · 5 replies
I just got the lastest HEAD and noticed that now my rifle model which has a hidden flash at the front is turning up in the shadow.
This can be seen with the Jill models Assault rifle as below:
users.on.net/~rnesmith/Hidden%20model%20shadow%20MS4%20HEAD%2024-09-2006.jpg
This can be seen with the Jill models Assault rifle as below:
users.on.net/~rnesmith/Hidden%20model%20shadow%20MS4%20HEAD%2024-09-2006.jpg
About the author
Currently working on a WW2 FPS game.
#2
In sgObjectBasedProjector.cc line 441 change the following:
09/25/2006 (2:20 pm)
It should be fixed, but can you double check it against your assets:In sgObjectBasedProjector.cc line 441 change the following:
void sgShadowProjector::sgRenderShape(TSShapeInstance *shapeinst, const MatrixF &trans1,
S32 vertconstindex1, const MatrixF &trans2, S32 vertconstindex2)
{
U32 detaillevel = shapeinst->getCurrentDetail();
if(detaillevel == -1)
return;
TSShape *shape = shapeinst->getShape();
AssertFatal((detaillevel >= 0) && (detaillevel < shape->details.size()), "TSShapeInstance::renderShadow");
const TSDetail *detail = &shape->details[detaillevel];
AssertFatal((detail->subShapeNum >= 0), "TSShapeInstance::renderShadow: not with a billboard detail level");
shapeinst->setStatics(detaillevel);
S32 s = shape->subShapeFirstObject[detail->subShapeNum];
S32 e = s + shape->subShapeNumObjects[detail->subShapeNum];
for(U32 i=s; i<e; i++)
{
TSMesh *mesh = shapeinst->mMeshObjects[i].getMesh(detail->objectDetailNum);
[b]if(mesh && (shapeinst->mMeshObjects[i].visible > 0.01))[/b]
{
MatrixF *meshtrans = shapeinst->mMeshObjects[i].getTransform();
MatrixF mat;
// one of those hidden issues with torque...
TSShapeInstance::smRenderData.currentObjectInstance = &shapeinst->mMeshObjects[i];
if(meshtrans)
mat.mul(trans1, (*meshtrans));
else
mat = trans1;
mat.transpose();
GFX->setVertexShaderConstF(vertconstindex1, mat, 4);
if(vertconstindex2 > -1)
{
if(meshtrans)
mat.mul(trans2, (*meshtrans));
else
mat = trans2;
mat.transpose();
GFX->setVertexShaderConstF(vertconstindex2, mat, 4);
}
mesh->render();
}
}
shapeinst->clearStatics();
}
#3
09/26/2006 (1:07 am)
That works great for me too, thanks John!
#4
09/26/2006 (4:02 am)
Good fix, thanks! Thought something looked screwy in my weapon shadows.
#5
09/26/2006 (4:33 am)
Great fix, thanks alot!
Torque Owner John Kabus (BobTheCBuilder)
Thanks for pointing this out - I'll add it to my ToDo list.