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 AxisLinesRenderer_Render(Real64 delta) { if (!Game_ShowAxisLines || Gfx_LostContext) return; /* Don't do it in a ContextRecreated handler, because we only want VB recreated if ShowAxisLines in on. */ if (axisLines_vb == NULL) { axisLines_vb = Gfx_CreateDynamicVb(VERTEX_FORMAT_P3FC4B, axisLines_numVertices); } Gfx_SetTexturing(false); Vector3 P = LocalPlayer_Instance.Base.Position; P.Y += 0.05f; VertexP3fC4b vertices[axisLines_numVertices]; VertexP3fC4b* ptr = vertices; PackedCol red = PACKEDCOL_RED; SelectionBox_HorQuad(&ptr, red, P.X, P.Z - axisLines_size, P.X + axisLines_length, P.Z + axisLines_size, P.Y); PackedCol blue = PACKEDCOL_BLUE; SelectionBox_HorQuad(&ptr, blue, P.X - axisLines_size, P.Z, P.X + axisLines_size, P.Z + axisLines_length, P.Y); if (Camera_Active->IsThirdPerson) { PackedCol green = PACKEDCOL_GREEN; SelectionBox_VerQuad(&ptr, green, P.X - axisLines_size, P.Y, P.Z + axisLines_size, P.X + axisLines_size, P.Y + axisLines_length, P.Z - axisLines_size); } Gfx_SetBatchFormat(VERTEX_FORMAT_P3FC4B); Int32 count = (Int32)(ptr - vertices); GfxCommon_UpdateDynamicVb_IndexedTris(axisLines_vb, vertices, count); }
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); }