[vulkan] Clean up r_origin and modelorg

Same deal as for GL and GLSL.
This commit is contained in:
Bill Currie 2022-03-08 18:41:09 +09:00
parent 075a0fe326
commit 20536d83eb
6 changed files with 17 additions and 26 deletions

View file

@ -707,10 +707,7 @@ Draw_TileClear (int x, int y, int w, int h)
vr.x = x; vr.x = x;
width = w; width = w;
if (tileoffsety != 0)
vr.height = r_rectdesc.height - tileoffsety; vr.height = r_rectdesc.height - tileoffsety;
else
vr.height = r_rectdesc.height;
if (vr.height > height) if (vr.height > height)
vr.height = height; vr.height = height;
@ -718,11 +715,7 @@ Draw_TileClear (int x, int y, int w, int h)
tileoffsetx = vr.x % r_rectdesc.width; tileoffsetx = vr.x % r_rectdesc.width;
while (width > 0) { while (width > 0) {
if (tileoffsetx != 0)
vr.width = r_rectdesc.width - tileoffsetx; vr.width = r_rectdesc.width - tileoffsetx;
else
vr.width = r_rectdesc.width;
if (vr.width > width) if (vr.width > width)
vr.width = width; vr.width = width;

View file

@ -653,10 +653,11 @@ get_side (mnode_t *node)
{ {
// find the node side on which we are // find the node side on which we are
plane_t *plane = node->plane; plane_t *plane = node->plane;
vec4f_t org = r_refdef.viewposition;
if (plane->type < 3) if (plane->type < 3)
return (r_origin[plane->type] - plane->dist) < 0; return (org[plane->type] - plane->dist) < 0;
return (DotProduct (r_origin, plane->normal) - plane->dist) < 0; return (DotProduct (org, plane->normal) - plane->dist) < 0;
} }
static inline void static inline void

View file

@ -160,7 +160,7 @@ update_lights (vulkan_ctx_t *ctx)
light_data->distFactor2 = 1 / 16384.0; light_data->distFactor2 = 1 / 16384.0;
light_data->lightCount = 0; light_data->lightCount = 0;
R_FindNearLights (r_origin, MaxLights - 1, lights); R_FindNearLights (&r_refdef.viewposition[0], MaxLights - 1, lights);
for (int i = 0; i < MaxLights - 1; i++) { for (int i = 0; i < MaxLights - 1; i++) {
if (!lights[i]) { if (!lights[i]) {
break; break;

View file

@ -70,14 +70,15 @@ setup_frame (vulkan_ctx_t *ctx)
EntQueue_Clear (r_ent_queue); EntQueue_Clear (r_ent_queue);
r_framecount++; r_framecount++;
VectorCopy (r_refdef.viewposition, r_origin); vec4f_t position = r_refdef.viewposition;
VectorCopy (qvmulf (r_refdef.viewrotation, (vec4f_t) { 1, 0, 0, 0 }), vpn); vec4f_t rotation = r_refdef.viewrotation;
VectorCopy (qvmulf (r_refdef.viewrotation, (vec4f_t) { 0, -1, 0, 0 }), vright); VectorCopy (qvmulf (rotation, (vec4f_t) { 1, 0, 0, 0 }), vpn);
VectorCopy (qvmulf (r_refdef.viewrotation, (vec4f_t) { 0, 0, 1, 0 }), vup); VectorCopy (qvmulf (rotation, (vec4f_t) { 0, -1, 0, 0 }), vright);
VectorCopy (qvmulf (rotation, (vec4f_t) { 0, 0, 1, 0 }), vup);
R_SetFrustum (); R_SetFrustum ();
r_viewleaf = Mod_PointInLeaf (r_origin, r_worldentity.renderer.model); r_viewleaf = Mod_PointInLeaf (&position[0], r_worldentity.renderer.model);
} }
static void static void

View file

@ -108,7 +108,7 @@ setup_sky (vulkan_ctx_t *ctx)
q = Blend (mctx->sky_rotation[0], mctx->sky_rotation[1], blend); q = Blend (mctx->sky_rotation[0], mctx->sky_rotation[1], blend);
q = normalf (qmulf (mctx->sky_fix, q)); q = normalf (qmulf (mctx->sky_fix, q));
mat4fidentity (mat); mat4fidentity (mat);
VectorNegate (r_origin, mat[3]); VectorNegate (r_refdef.viewposition, mat[3]);
mat4fquat (m, q); mat4fquat (m, q);
mmulf (mat, m, mat); mmulf (mat, m, mat);
Vulkan_SetSkyMatrix (ctx, mat); Vulkan_SetSkyMatrix (ctx, mat);

View file

@ -108,7 +108,7 @@ Vulkan_DrawSprite (entity_t *ent, qfv_renderframe_t *rFrame)
msprite_t *sprite = model->cache.data; msprite_t *sprite = model->cache.data;
animation_t *animation = &ent->animation; animation_t *animation = &ent->animation;
mat4f_t mat; mat4f_t mat = {};
uint32_t frame; uint32_t frame;
qfv_push_constants_t push_constants[] = { qfv_push_constants_t push_constants[] = {
{ VK_SHADER_STAGE_VERTEX_BIT, 0, sizeof (mat), mat }, { VK_SHADER_STAGE_VERTEX_BIT, 0, sizeof (mat), mat },
@ -119,14 +119,10 @@ Vulkan_DrawSprite (entity_t *ent, qfv_renderframe_t *rFrame)
frame = (ptrdiff_t) R_GetSpriteFrame (sprite, animation); frame = (ptrdiff_t) R_GetSpriteFrame (sprite, animation);
mat[3] = Transform_GetWorldPosition (ent->transform); mat[3] = Transform_GetWorldPosition (ent->transform);
vec4f_t cameravec = {r_origin[0], r_origin[1], r_origin[2], 0 }; vec4f_t cameravec = r_refdef.viewposition - mat[3];
vec4f_t svpn = {}, svright = {}, svup = {};
cameravec -= mat[3];
R_BillboardFrame (ent, sprite->type, &cameravec[0], R_BillboardFrame (ent, sprite->type, &cameravec[0],
&svup[0], &svright[0], &svpn[0]); &mat[2][0], &mat[1][0], &mat[0][0]);
mat[2] = svup; mat[0] = -mat[0];
mat[1] = svright;
mat[0] = -svpn;
emit_commands (sframe->cmdSet.a[QFV_spriteDepth], emit_commands (sframe->cmdSet.a[QFV_spriteDepth],
(qfv_sprite_t *) ((byte *) sprite + sprite->data), (qfv_sprite_t *) ((byte *) sprite + sprite->data),