Make some visual improvments on the portal gun

This commit is contained in:
James Lambert 2023-11-15 21:39:20 -07:00
parent 8fa6ab87b3
commit 4e06800cff
6 changed files with 60 additions and 10 deletions

View file

@ -5,21 +5,67 @@ materials:
g: 255 g: 255
b: 255 b: 255
gSPGeometryMode: gSPGeometryMode:
set: [G_LIGHTING, G_SHADE] set: [G_LIGHTING, G_SHADE, G_CULL_BACK]
gDPSetCombineMode: gDPSetCombineMode:
color: ["PRIMITIVE", "0", "SHADE", "0"] color: ["PRIMITIVE", "0", "SHADE", "0"]
gDPSetRenderMode: G_RM_OPA_SURF gDPSetRenderMode: G_RM_OPA_SURF
gDPSetCycleType: G_CYC_1CYCLE
portal_gun_metal: portal_gun_metal:
gDPSetTile:
filename: ../../portal_pak_modified/materials/metal/metalwall_bts_006a.png
siz: G_IM_SIZ_16b
s:
wrap: true
t:
wrap: true
gSPGeometryMode:
set: [G_LIGHTING, G_TEXTURE_GEN, G_SHADE, G_CULL_BACK]
gDPSetCombineMode:
- color: ["PRIMITIVE", "0", "SHADE", "0"]
- color: ["TEXEL1", "0", "PRIMITIVE_ALPHA", "COMBINED"]
gDPSetCycleType: G_CYC_2CYCLE
gSPTexture:
sc: 1984
tc: 1984
gDPSetPrimColor: gDPSetPrimColor:
r: 32 r: 32
g: 32 g: 32
b: 32 b: 32
a: 96
gDPSetRenderMode: [G_RM_PASS, G_RM_OPA_SURF]
portal_gun_glass:
gDPSetTile:
filename: ../../portal_pak_modified/materials/metal/metalwall_bts_006a.png
siz: G_IM_SIZ_16b
s:
wrap: true
t:
wrap: true
gDPSetPrimColor:
r: 128
g: 128
b: 128
a: 128
gSPGeometryMode: gSPGeometryMode:
set: [G_LIGHTING, G_SHADE] set: [G_LIGHTING, G_TEXTURE_GEN, G_SHADE]
clear: [G_CULL_BACK]
gDPSetCombineMode: gDPSetCombineMode:
color: ["PRIMITIVE", "0", "SHADE", "0"] color: ["PRIMITIVE", "0", "SHADE", "TEXEL0"]
gDPSetRenderMode: G_RM_OPA_SURF alpha: ["0", "0", "0", "PRIMITIVE"]
gDPSetRenderMode: G_RM_XLU_SURF
gDPSetCycleType: G_CYC_1CYCLE
button_base: button_base:
gDPSetTile: gDPSetTile:

View file

@ -185,9 +185,9 @@ materials:
filename: ../../portal_pak_modified/materials/metal/metalwall_bts_006a.png filename: ../../portal_pak_modified/materials/metal/metalwall_bts_006a.png
siz: G_IM_SIZ_16b siz: G_IM_SIZ_16b
s: s:
wrap: false wrap: true
t: t:
wrap: false wrap: true
gSPGeometryMode: gSPGeometryMode:
set: [G_LIGHTING, G_TEXTURE_GEN, G_TEXTURE_GEN_LINEAR, G_SHADE] set: [G_LIGHTING, G_TEXTURE_GEN, G_TEXTURE_GEN_LINEAR, G_SHADE]

View file

@ -1 +1 @@
-m assets/materials/objects.skm.yaml --sort-dir 0.029977,0.118112,0.030978 --model --fixed-point-scale 512 -m assets/materials/objects.skm.yaml --sort-dir 0.029977,0.118112,0.030978 --model

View file

@ -114,6 +114,8 @@ void portalBallRender(struct PortalGunProjectile* projectile, struct RenderState
gSPPopMatrix(renderState->dl++, G_MTX_MODELVIEW); gSPPopMatrix(renderState->dl++, G_MTX_MODELVIEW);
} }
extern LookAt gLookAt;
void portalGunRenderReal(struct PortalGun* portalGun, struct RenderState* renderState, struct Camera* fromCamera, int portalGunVisible) { void portalGunRenderReal(struct PortalGun* portalGun, struct RenderState* renderState, struct Camera* fromCamera, int portalGunVisible) {
struct MaterialState materialState; struct MaterialState materialState;
materialStateInit(&materialState, DEFAULT_INDEX); materialStateInit(&materialState, DEFAULT_INDEX);
@ -143,7 +145,9 @@ void portalGunRenderReal(struct PortalGun* portalGun, struct RenderState* render
cameraModifyProjectionViewForPortalGun(fromCamera, renderState, PORTAL_GUN_NEAR_PLANE * SCENE_SCALE, (float)SCREEN_WD / (float)SCREEN_HT); cameraModifyProjectionViewForPortalGun(fromCamera, renderState, PORTAL_GUN_NEAR_PLANE * SCENE_SCALE, (float)SCREEN_WD / (float)SCREEN_HT);
transformToMatrixL(&portalGun->rigidBody.transform, matrix, SCENE_SCALE); gSPLookAt(renderState->dl++, &gLookAt);
transformToMatrixL(&portalGun->rigidBody.transform, matrix, 512);
gSPMatrix(renderState->dl++, matrix, G_MTX_MODELVIEW | G_MTX_PUSH | G_MTX_MUL); gSPMatrix(renderState->dl++, matrix, G_MTX_MODELVIEW | G_MTX_PUSH | G_MTX_MUL);
gSPDisplayList(renderState->dl++, portal_gun_v_portalgun_model_gfx); gSPDisplayList(renderState->dl++, portal_gun_v_portalgun_model_gfx);
gSPPopMatrix(renderState->dl++, G_MTX_MODELVIEW); gSPPopMatrix(renderState->dl++, G_MTX_MODELVIEW);

View file

@ -523,11 +523,11 @@ void renderPlanExecute(struct RenderPlan* renderPlan, struct Scene* scene, Mtx*
struct Vector3 cameraForward; struct Vector3 cameraForward;
quatMultVector(&current->camera.transform.rotation, &gForward, &cameraForward); quatMultVector(&current->camera.transform.rotation, &gForward, &cameraForward);
vector3Negate(&cameraForward, &cameraForward); vector3Negate(&cameraForward, &cameraForward);
vector3ToVector3u8(&cameraForward, (struct Vector3u8*)&gLookAt.l[0].l.dir); vector3ToVector3u8(&cameraForward, (struct Vector3u8*)&lookAt->l[0].l.dir);
quatMultVector(&current->camera.transform.rotation, &gUp, &cameraForward); quatMultVector(&current->camera.transform.rotation, &gUp, &cameraForward);
vector3Negate(&cameraForward, &cameraForward); vector3Negate(&cameraForward, &cameraForward);
vector3ToVector3u8(&cameraForward, (struct Vector3u8*)&gLookAt.l[1].l.dir); vector3ToVector3u8(&cameraForward, (struct Vector3u8*)&lookAt->l[1].l.dir);
gSPLookAt(renderState->dl++, lookAt); gSPLookAt(renderState->dl++, lookAt);
int portalIndex = (current->portalRenderType & PORTAL_RENDER_TYPE_SECOND_CLOSER) ? 1 : 0; int portalIndex = (current->portalRenderType & PORTAL_RENDER_TYPE_SECOND_CLOSER) ? 1 : 0;