Skip to content

tiny project to test out an idea i had to render fov independent viewmodels

License

Notifications You must be signed in to change notification settings

swimming92404/godot-viewmodel-render-test

 
 

Repository files navigation

godot-viewmodel-render-test

Demo project to test out viewmodel rendering in godot.

I want this

Copy these uniforms to where your uniforms are.

const float PI = 3.1415926;

uniform float viewmodel_fov = 50.0f;

Copy this at the end of your vertex shader

float onetanfov = 1.0f / tan(0.5f * (viewmodel_fov * PI / 180.0f));
float aspect = VIEWPORT_SIZE.x / VIEWPORT_SIZE.y;
// modify projection matrix
PROJECTION_MATRIX[1][1] = onetanfov;
PROJECTION_MATRIX[0][0] = onetanfov / aspect;

// draws the viewmodel over everything (disable if you want dof near on viewmodel)
POSITION = PROJECTION_MATRIX * MODELVIEW_MATRIX * vec4(VERTEX.xyz, 1.0);
POSITION.z = mix(POSITION.z, 0, 0.99);

See /Assets/Viewmodel.gdshader for the complete shader code.

How it works

The viewmodel shader modifies its projection matrix to render the viewmodel at a different fov than the main camera.

camera fov 40 and viewmodel fov 60 camera fov 90 and viewmodel fov 60 money shot with dof doesnt clip into nearby geometry

About

tiny project to test out an idea i had to render fov independent viewmodels

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • GDScript 100.0%