void MapRenderer_RenderNormal(double delta) { int batch; if (!mapChunks) return; Gfx_SetVertexFormat(VERTEX_FORMAT_P3FT2FC4B); Gfx_SetTexturing(true); Gfx_SetAlphaTest(true); Gfx_EnableMipmaps(); for (batch = 0; batch < MapRenderer_1DUsedCount; batch++) { if (normPartsCount[batch] <= 0) continue; if (hasNormParts[batch] || checkNormParts[batch]) { Gfx_BindTexture(Atlas1D.TexIds[batch]); MapRenderer_RenderNormalBatch(batch); checkNormParts[batch] = false; } } Gfx_DisableMipmaps(); MapRenderer_CheckWeather(delta); Gfx_SetAlphaTest(false); Gfx_SetTexturing(false); #if DEBUG_OCCLUSION DebugPickedPos(); #endif }
void Particles_Render(Real64 delta, Real32 t) { if (Terrain_Count == 0 && Rain_Count == 0) return; if (Gfx_LostContext) return; Gfx_SetTexturing(true); Gfx_SetAlphaTest(true); Gfx_SetBatchFormat(VERTEX_FORMAT_P3FT2FC4B); Terrain_Render(t); Rain_Render(t); Gfx_SetAlphaTest(false); Gfx_SetTexturing(false); }
void MapRenderer_RenderTranslucent(double delta) { int vertices, batch; if (!mapChunks) return; /* First fill depth buffer */ vertices = Game_Vertices; Gfx_SetVertexFormat(VERTEX_FORMAT_P3FT2FC4B); Gfx_SetTexturing(false); Gfx_SetAlphaBlending(false); Gfx_SetColWriteMask(false, false, false, false); for (batch = 0; batch < MapRenderer_1DUsedCount; batch++) { if (tranPartsCount[batch] <= 0) continue; if (hasTranParts[batch] || checkTranParts[batch]) { MapRenderer_RenderTranslucentBatch(batch); checkTranParts[batch] = false; } } Game_Vertices = vertices; /* Then actually draw the transluscent blocks */ Gfx_SetAlphaBlending(true); Gfx_SetTexturing(true); Gfx_SetColWriteMask(true, true, true, true); Gfx_SetDepthWrite(false); /* already calculated depth values in depth pass */ Gfx_EnableMipmaps(); for (batch = 0; batch < MapRenderer_1DUsedCount; batch++) { if (tranPartsCount[batch] <= 0) continue; if (!hasTranParts[batch]) continue; Gfx_BindTexture(Atlas1D.TexIds[batch]); MapRenderer_RenderTranslucentBatch(batch); } Gfx_DisableMipmaps(); Gfx_SetDepthWrite(true); /* If we weren't under water, render weather after to blend properly */ if (!inTranslucent && Env.Weather != WEATHER_SUNNY) { Gfx_SetAlphaTest(true); EnvRenderer_RenderWeather(delta); Gfx_SetAlphaTest(false); } Gfx_SetAlphaBlending(false); Gfx_SetTexturing(false); }