From 314b52e99e299a00f24a84d3de53f5d7f720336a Mon Sep 17 00:00:00 2001 From: Nico de Poel Date: Tue, 31 Jan 2023 10:49:48 +0100 Subject: [PATCH] Added a separate CLUT for transparent surfaces, and set semi-transparency mode on water polygons. --- atlas-n64start.tim | Bin 180768 -> 181280 bytes common.h | 1 + draw.h | 3 ++- main.c | 2 ++ 4 files changed, 5 insertions(+), 1 deletion(-) diff --git a/atlas-n64start.tim b/atlas-n64start.tim index f48abac306182bd36488df00aa0cd596006ee15a..29bba630395c47549ef52d6e80af5c27fe3c34e0 100755 GIT binary patch delta 562 zcmXw#T}V@L7{<>|X1b#`(u*j9j$M>#gj7;d7fpo-KO%~{>Z0jI3@i$|k=P5q({tiK zJ)38`;pRu|KV5agBc1$+iIyEUKSovzD`*kKN;D%Zp)S@5iih8O^YFer@6(T5zrYn* z7>3C;$jdSYYhYs4!i>qmFg)^TBUDZYN~m2?w6$otelwvZH{KshH?KuEcqqn7Y!IA6 zm<*CQS(eQ1Qg@BJ*4^ao@Ty)Ot;8mwj|TKmdMHON(d} z{eVPAly$XY;^I?>fA(GC$jidn#p&VbHLXr9i*R(gKkgfnTcv7JB@`Rsk_+1N&gmQD zXSIV$eq<#y7l`--xlL;P=kH9tNp>eL=!Yi1j}NOIky=_BT=vD}u+%^*jo%9)GYG^?_S=w+{wJzy0dU{LXN&6%ON3Jb|fK*{O6U!$3kzG3lq-)0JeV!S^xk5 diff --git a/common.h b/common.h index 224e89f..442ade7 100644 --- a/common.h +++ b/common.h @@ -26,5 +26,6 @@ extern SVECTOR cam_dir; extern u_short cam_leaf; extern u_short quake_clut; +extern u_short water_clut; #endif // __COMMON_H__ diff --git a/draw.h b/draw.h index bd18ba0..d939900 100644 --- a/draw.h +++ b/draw.h @@ -289,6 +289,7 @@ static INLINE void draw_quadstrip_water(const ps1bsp_vertex_t *vertices, const p // Draw a flat-shaded textured quad POLY_FT4 *poly = (POLY_FT4*)mem_prim(sizeof(POLY_FT4)); setPolyFT4(poly); + setSemiTrans(poly, 1); gte_stsxy3_ft3(poly); // Transform the fourth vertex to complete the quad @@ -298,7 +299,7 @@ static INLINE void draw_quadstrip_water(const ps1bsp_vertex_t *vertices, const p // Texture UVs setUV4(poly, v0->u, v0->v, v1->u, v1->v, v2->u, v2->v, v3->u, v3->v); - poly->clut = quake_clut; + poly->clut = water_clut; poly->tpage = tpage; // Unlit diff --git a/main.c b/main.c index 5b5e49c..7ac33ef 100644 --- a/main.c +++ b/main.c @@ -17,6 +17,7 @@ u_short cam_leaf = 0; world_t world; u_short quake_clut; +u_short water_clut; // BSP face rendering: // - Gather vertex data from face start index + length @@ -35,6 +36,7 @@ void init(void) ps1texture_t maptex; asset_loadTexture(tim_start, &maptex); quake_clut = getClut(maptex.crect.x, maptex.crect.y); + water_clut = getClut(maptex.crect.x, maptex.crect.y + 1); world_load(bsp_test, &world); }