Shader Graph v14.0.8에서 작성
Custom Function으로 사용하기 위한 코드 백업
Main Light
void CustomLight_float( float3 WorldPos, out float3 Direction , out float3 Color, out float ShadowAtten, out float DistanceAtten)
{
#ifdef SHADERGRAPH_PREVIEW
Direction = float3(1,1,1);
Color = float3(1,1,1);
ShadowAtten = 1.0f;
DistanceAtten = 1.0f;
#else
#if defined(_MAIN_LIGHT_SHADOWS_SCREEN) && !defined(_SURFACE_TYPE_TRANSPARENT)
half4 clipPos = TransformWorldToHClip(WorldPos);
half4 shadowCoord = ComputeScreenPos(clipPos);
#else
half4 shadowCoord = TransformWorldToShadowCoord(WorldPos);
#endif
Light light = GetMainLight();
Direction = light.direction;
Color = light.color;
DistanceAtten = light.distanceAttenuation;
#if !defined(_MAIN_LIGHT_SHADOWS) || defined(_RECEIVE_SHADOWS_OFF)
ShadowAtten = 1.0f;
#endif
#if SHADOWS_SCREEN
ShadowAtten = SampleScreenSpaceShadowmap(shadowCoord);
#else
ShadowSamplingData shadowSamplingData = GetMainLightShadowSamplingData();
half shadowStrength = GetMainLightShadowStrength();
ShadowAtten = SampleShadowmap(shadowCoord, TEXTURE2D_ARGS(_MainLightShadowmapTexture,
sampler_MainLightShadowmapTexture),
shadowSamplingData, shadowStrength, false);
#endif
#endif
}
Additional Light
void AdditionalLights_float(float3 WorldPos, float3 WorldNormal, float3 WorldView, out float3 Diffuse)
{
float3 diffuseColor = 0;
#ifndef SHADERGRAPH_PREVIEW
WorldNormal = normalize(WorldNormal);
WorldView = SafeNormalize(WorldView);
int pixelLightCount = GetAdditionalLightsCount();
for (int i = 0; i < pixelLightCount; ++i)
{
Light light = GetAdditionalLight(i, WorldPos);
half3 attenuatedLightColor = light.color * (light.distanceAttenuation * light.shadowAttenuation);
diffuseColor += LightingLambert(attenuatedLightColor, light.direction, WorldNormal);
}
#endif
Diffuse = diffuseColor;
}
'Unity > Code' 카테고리의 다른 글
[SCRIPT CODE] LOD Group Toggler (0) | 2023.11.02 |
---|---|
[SCRIPT CODE] Favorites List (0) | 2023.11.02 |
[SCRIPT CODE] Material Manager Tool (0) | 2023.11.02 |
[SCRIPT][리소스 관리] Material Manager Tool (0) | 2023.11.02 |
[SCRIPT CODE] Planar Reflection 테스트에 사용된 스크립트 (0) | 2023.10.30 |