Skip to content

Instantly share code, notes, and snippets.

@simonbroggi
Last active February 23, 2026 10:13
Show Gist options
  • Select an option

  • Save simonbroggi/672b979ca37b01db752e0087b26315ab to your computer and use it in GitHub Desktop.

Select an option

Save simonbroggi/672b979ca37b01db752e0087b26315ab to your computer and use it in GitHub Desktop.
Unity Shadergraph custom function node for main light data
#ifndef MAINLIGHT_INCLUDED
#define MAINLIGHT_INCLUDED
void GetMainLightData_float(out half3 direction, out half3 color, out half distanceAttenuation, out half shadowAttenuation)
{
#ifdef SHADERGRAPH_PREVIEW
// In Shader Graph Preview we will assume a default light direction and white color
direction = half3(-0.3, -0.8, 0.6);
color = half3(1, 1, 1);
distanceAttenuation = 1.0;
shadowAttenuation = 1.0;
#else
// Universal Render Pipeline
#if defined(UNIVERSAL_LIGHTING_INCLUDED)
// GetMainLight defined in Packages/com.unity.render-pipelines.universal/ShaderLibrary/Lighting.hlsl
Light mainLight = GetMainLight();
direction = -mainLight.direction;
color = mainLight.color;
distanceAttenuation = mainLight.distanceAttenuation;
shadowAttenuation = mainLight.shadowAttenuation;
#elif defined(HD_LIGHTING_INCLUDED)
// ToDo: make it work for HDRP (check define above)
// Packages/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightDefinition.cs.hlsl
// if (_DirectionalLightCount > 0)
// {
// DirectionalLightData light = _DirectionalLightDatas[0];
// lightDir = -light.forward.xyz;
// color = light.color;
// ......
#endif
#endif
}
#endif
@ccaner37
Copy link

Super useful!

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