Skip to content

Instantly share code, notes, and snippets.

@zensharp
Last active January 18, 2021 16:48
Show Gist options
  • Save zensharp/2b53e88524f57414a05cc00c877615e8 to your computer and use it in GitHub Desktop.
Save zensharp/2b53e88524f57414a05cc00c877615e8 to your computer and use it in GitHub Desktop.
Small writeup on FadeParams shader vectors

Overview

Returns a packed "FadeParams" vector for a shader. The standard packing format is:

Component Value
x near
y 1 / (far - near)
z (unused)
w (unused)

Implementation

public static Vector4 GetFadeParams(float near, float far) => new Vector4(near, 1.0F / (far - near), 0.0F, 0.0F);

Usage

In your shader gui, pass a packed vector to Material.SetVector:

var cameraFadeParams = FadeParams(1.0F, 2.0F);
material.SetVector("_CameraFadeParams", cameraFadeParams);

Then, access the vector in the shader. Canonically,

#define CAMERA_NEAR_FADE _CameraFadeParams.x
#define CAMERA_INV_FADE_DISTANCE _CameraFadeParams.y

float cameraFade = saturate((x - CAMERA_NEAR_FADE) * CAMERA_INV_FADE_DISTANCE);

References

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment