dont render untextured world

This commit is contained in:
aap 2021-01-10 13:05:34 +01:00
parent 0ee87d7b46
commit 453405f131
2 changed files with 14 additions and 10 deletions

View file

@ -733,6 +733,9 @@ AtomicFirstPass(RpAtomic *atomic, int pass)
for(rw::uint32 i = 0; i < building->instHeader->numMeshes; i++, inst++){
Material *m = inst->material;
if(m->texture == nil)
continue;
if(inst->vertexAlpha || m->color.alpha != 255 ||
IsTextureTransparent(m->texture)){
defer = true;
@ -769,10 +772,7 @@ AtomicFirstPass(RpAtomic *atomic, int pass)
colorscale[0] = colorscale[1] = colorscale[2] = cs;
d3ddevice->SetPixelShaderConstantF(CustomPipes::PSLOC_colorscale, colorscale, 1);
if(m->texture)
d3d::setTexture(0, m->texture);
else
d3d::setTexture(0, gpWhiteTexture); // actually we don't even render this
setMaterial(m->color, m->surfaceProps, 0.5f);
@ -836,19 +836,18 @@ RenderBlendPass(int pass)
InstanceData *inst = building->instHeader->inst;
for(rw::uint32 j = 0; j < building->instHeader->numMeshes; j++, inst++){
Material *m = inst->material;
if(m->texture == nil)
continue;
if(!inst->vertexAlpha && m->color.alpha == 255 && !IsTextureTransparent(m->texture) && building->fadeAlpha == 255)
continue; // already done this one
float cs = 1.0f;
if(m->texture)
if(m->texture) // always true
cs = 255/128.0f;
colorscale[0] = colorscale[1] = colorscale[2] = cs;
d3ddevice->SetPixelShaderConstantF(CustomPipes::PSLOC_colorscale, colorscale, 1);
if(m->texture)
d3d::setTexture(0, m->texture);
else
d3d::setTexture(0, gpWhiteTexture); // actually we don't even render this
rw::RGBA color = m->color;
color.alpha = (color.alpha * building->fadeAlpha)/255;

View file

@ -805,6 +805,9 @@ AtomicFirstPass(RpAtomic *atomic, int pass)
for(rw::uint32 i = 0; i < building->instHeader->numMeshes; i++, inst++){
Material *m = inst->material;
if(m->texture == nil)
continue;
if(inst->vertexAlpha || m->color.alpha != 255 ||
IsTextureTransparent(m->texture)){
defer = true;
@ -913,6 +916,8 @@ RenderBlendPass(int pass)
InstanceData *inst = building->instHeader->inst;
for(rw::uint32 j = 0; j < building->instHeader->numMeshes; j++, inst++){
Material *m = inst->material;
if(m->texture == nil)
continue;
if(!inst->vertexAlpha && m->color.alpha == 255 && !IsTextureTransparent(m->texture) && building->fadeAlpha == 255)
continue; // already done this one
@ -921,7 +926,7 @@ RenderBlendPass(int pass)
setMaterial(color, m->surfaceProps, 0.5f);
float cs = 1.0f;
if(m->texture)
if(m->texture) // always true
cs = 255/128.0f;
colorscale[0] = colorscale[1] = colorscale[2] = cs;
glUniform4fv(U(CustomPipes::u_colorscale), 1, colorscale);