mirror of
https://github.com/yquake2/yquake2remaster.git
synced 2025-02-17 01:21:12 +00:00
soft: fix model skin textures
Soft render still uses downscalled skins and wall, code fixes case when skin(s,t) size defined in model is slightly different to real skin dementions. Code checks skin size in model and image asset size and scale.
This commit is contained in:
parent
96b8707825
commit
689950068a
3 changed files with 8 additions and 4 deletions
|
@ -206,6 +206,8 @@ typedef struct
|
|||
pixel_t *pskin;
|
||||
int skinwidth;
|
||||
int skinheight;
|
||||
float scalewidth;
|
||||
float scaleheight;
|
||||
} affinetridesc_t;
|
||||
|
||||
typedef struct
|
||||
|
|
|
@ -592,8 +592,10 @@ R_AliasSetupSkin(const entity_t *currententity, const model_t *currentmodel)
|
|||
return false;
|
||||
|
||||
r_affinetridesc.pskin = pskindesc->pixels[0];
|
||||
r_affinetridesc.skinwidth = pskindesc->width;
|
||||
r_affinetridesc.skinheight = pskindesc->height;
|
||||
r_affinetridesc.skinwidth = pskindesc->asset_width;
|
||||
r_affinetridesc.skinheight = pskindesc->asset_height;
|
||||
r_affinetridesc.scalewidth = (float)pskindesc->asset_width / s_pmdl->skinwidth;
|
||||
r_affinetridesc.scaleheight = (float)pskindesc->asset_height / s_pmdl->skinheight;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
|
|
@ -784,8 +784,8 @@ R_ProcessLeftEdge(const compactvert_t *plefttop, const compactvert_t *prighttop,
|
|||
v = plefttop->v;
|
||||
d_aspancount = plefttop->u - prighttop->u;
|
||||
|
||||
s = plefttop->s;
|
||||
t = plefttop->t;
|
||||
s = plefttop->s * r_affinetridesc.scalewidth;
|
||||
t = plefttop->t * r_affinetridesc.scaleheight;
|
||||
i = (s >> SHIFT16XYZ) + (t >> SHIFT16XYZ) * r_affinetridesc.skinwidth;
|
||||
d_ptex = &r_affinetridesc.pskin[i];
|
||||
d_sfrac = s & 0xFFFF;
|
||||
|
|
Loading…
Reference in a new issue