It Ends With You







Breakdowns 05
PS1 vertex snapping
float4 PSXSnapVertex(float4 positionCS, float2 gridResolution, half amount)
{
float4 snapped = positionCS;
float2 ndc = positionCS.xy / positionCS.w; // clip -> NDC
float2 snappedNDC = (floor(ndc * gridResolution) + 0.5) / gridResolution; // snap to coarse grid
snapped.xy = snappedNDC * positionCS.w; // back to clip space
return lerp(positionCS, snapped, amount); // 0 = smooth, 1 = full PS1
}
// last line of the vertex shader
output.positionCS = PSXSnapVertex(vertexInput.positionCS, max(_RenderResolution.xy, float2(2, 2)), _VertexSnapAmount);Lighting and post-processing for atmosphere


Low-poly character topology


Rig and animation in game


Dialogue system
// on interact: the first press finishes a line that's still typing, the next advances
if (dialoguePanel != null && dialoguePanel.IsTyping) { dialoguePanel.SkipTyping(); return; }
lineIndex++;
ShowCurrentLine();
// ShowCurrentLine: lines whose CanShow() is false are skipped, so dialogue is conditional
if (line == null || !line.CanShow()) { lineIndex++; continue; }
dialoguePanel.ShowLine(line.text, true);
line.ExecuteActions();