A quick drop in file to change any mod (that doesn't use custom shaders) into a Playstation 1 look alike.
There are two folders "Playstationify No Affine" and "Playstationify With Affine".
The file mb.fx in "With Affine" will introduce affine texture mapping (no perspective corrections, texture swimming), vertex snapping on a 160x120 grid and z-fighting for close surfaces, while "No Affine" will only have the vertex snapping.
Just like all your favorite PS1 experiences!
There is also the source included so one might change the grid size and things like that.
Installation Instructions:
- Unzip file
- Drop the desired mb.fx into mod folder
The idea isn't for a usable experience, but a nostalgic one.
If you would like to add this to your own shaders, here's the function I made to create the effect
float4 playstationify(float4 vPos)
{
int vRes = 120; // Vertical Resolution, Smaller = Chunkier Snapping
int hRes = 160; // Horizontal Resolution
float4 projection = mul(matWorldViewProj, vPos);
float4 vertex = projection;
vertex.xyz = projection.xyz / projection.w; // By dividing the Vertex position by it's depth, you are essentially removing the affine texture mapping.
vertex.x = floor(hRes * vertex.x) / hRes; // This is a hack to lose percision and cause vertex snapping
vertex.y = floor(vRes * vertex.y) / vRes;
vertex.xyz *= projection.w; // Reintroduce the depth
if(vertex.w > 0)
vertex /= vertex.w; // Remove the depth once again, only if the vertex is in front of the camera
return vertex;
}
Some might ask "why", but this is more of a "why not" scenario.
Lol ^^