Fixed MD5 models.

GI now bounces off textures properly.
This commit is contained in:
Justin Marshall
2026-05-21 18:58:43 -07:00
parent 1f5f0733fe
commit 345e6bfc81
10 changed files with 384 additions and 70 deletions
+24 -5
View File
@@ -568,10 +568,12 @@ void idRenderModelStatic::UpdateDXR(uint32_t& dxrBottomAcel, int onlySurface)
continue;
modelSurface_t* surf = &surfaces[i];
if (!surf->geometry || surf->geometry->numVerts <= 0 || surf->geometry->numIndexes <= 0)
continue;
if (onlySurface == -1)
{
if (!surf->shader->IsLitMaterial()) {
if (!surf->shader || !surf->shader->IsLitMaterial()) {
continue;
}
}
@@ -591,14 +593,21 @@ void idRenderModelStatic::UpdateDXR(uint32_t& dxrBottomAcel, int onlySurface)
continue;
modelSurface_t* surf = &surfaces[i];
if (!surf->geometry || surf->geometry->numVerts <= 0 || surf->geometry->numIndexes <= 0)
continue;
if (onlySurface == -1)
{
if (!surf->shader->IsLitMaterial()) {
if (!surf->shader || !surf->shader->IsLitMaterial()) {
continue;
}
}
if (!surf->geometry->tangentsCalculated)
{
R_DeriveTangents(surf->geometry);
}
for (int d = 0; d < surf->geometry->numIndexes; ++d)
{
indices[indexId++] = vertexId + surf->geometry->indexes[d];
@@ -606,9 +615,15 @@ void idRenderModelStatic::UpdateDXR(uint32_t& dxrBottomAcel, int onlySurface)
for (int d = 0; d < surf->geometry->numVerts; ++d)
{
vertices[vertexId].xyz[0] = surf->geometry->verts[d].xyz.x;
vertices[vertexId].xyz[1] = surf->geometry->verts[d].xyz.y;
vertices[vertexId].xyz[2] = surf->geometry->verts[d].xyz.z;
const idDrawVert& src = surf->geometry->verts[d];
vertices[vertexId].xyz[0] = src.xyz.x;
vertices[vertexId].xyz[1] = src.xyz.y;
vertices[vertexId].xyz[2] = src.xyz.z;
vertices[vertexId].normal[0] = src.normal.x;
vertices[vertexId].normal[1] = src.normal.y;
vertices[vertexId].normal[2] = src.normal.z;
vertices[vertexId].st[0] = src.st.x;
vertices[vertexId].st[1] = src.st.y;
vertexId++;
}
}
@@ -625,6 +640,10 @@ void idRenderModelStatic::UpdateDXR(uint32_t& dxrBottomAcel, int onlySurface)
desc.indexCount = (uint32_t)numDXRIndexes;
desc.allowUpdate = 1;
desc.opaque = 1;
desc.averageColor[0] = 1.0f;
desc.averageColor[1] = 1.0f;
desc.averageColor[2] = 1.0f;
desc.averageColor[3] = 1.0f;
if (!dxrBottomAcel)
{