ioq3/code/renderervk/RB_DrawNormals.c
Trung Lê 15ff484715
Add vulkan renderer
Copied from vkQuake3 which is in turn based on Quake III Kenny Edition
2025-03-14 00:31:15 +11:00

43 lines
1.2 KiB
C

#include "tr_backend.h"
#include "vk_shade_geometry.h"
#include "tr_globals.h"
#include "vk_pipelines.h"
/*
================
Draws vertex normals for debugging
================
*/
void RB_DrawNormals (shaderCommands_t* pTess, int numVertexes )
{
// VULKAN
// int numVertexes = tess.numVertexes;
vec4_t xyz[SHADER_MAX_VERTEXES];
memcpy(xyz, pTess->xyz, numVertexes * sizeof(vec4_t));
memset(pTess->svars.colors, tr.identityLightByte, SHADER_MAX_VERTEXES * sizeof(color4ub_t));
int i = 0;
while (i < numVertexes)
{
int count = numVertexes - i;
if (count >= SHADER_MAX_VERTEXES/2 - 1)
count = SHADER_MAX_VERTEXES/2 - 1;
int k;
for (k = 0; k < count; k++)
{
VectorCopy(xyz[i + k], pTess->xyz[2*k]);
VectorMA(xyz[i + k], 2, pTess->normal[i + k], pTess->xyz[2*k + 1]);
}
pTess->numVertexes = 2 * count;
pTess->numIndexes = 0;
vk_UploadXYZI(pTess->xyz, pTess->numVertexes, NULL, 0);
updateMVP(backEnd.viewParms.isPortal, backEnd.projection2D, getptr_modelview_matrix());
vk_shade_geometry(g_stdPipelines.normals_debug_pipeline, VK_FALSE, DEPTH_RANGE_ZERO, VK_FALSE);
i += count;
}
}