#ifndef CUSTOM_LIGHTING_INCLUDED #define CUSTOM_LIGHTING_INCLUDED void MainLight_float(float3 WorldPos, out float3 Direction, out float3 Color, out float DistanceAtten, out float ShadowAtten) { #if SHADERGRAPH_PREVIEW Direction = float3(0.5, 0.5, 0); Color = 1; DistanceAtten = 1; ShadowAtten = 1; #else #if SHADOWS_SCREEN float4 clipPos = TransformWorldToHClip(WorldPos); float4 shadowCoord = ComputeScreenPos(clipPos); #else float4 shadowCoord = TransformWorldToShadowCoord(WorldPos); #endif Light mainLight = GetMainLight(shadowCoord); Direction = mainLight.direction; Color = mainLight.color; DistanceAtten = mainLight.distanceAttenuation; ShadowAtten = mainLight.shadowAttenuation; #endif } void MainLight_half(float3 WorldPos, out half3 Direction, out half3 Color, out half DistanceAtten, out half ShadowAtten) { #if SHADERGRAPH_PREVIEW Direction = half3(0.5, 0.5, 0); Color = 1; DistanceAtten = 1; ShadowAtten = 1; #else #if SHADOWS_SCREEN half4 clipPos = TransformWorldToHClip(WorldPos); half4 shadowCoord = ComputeScreenPos(clipPos); #else half4 shadowCoord = TransformWorldToShadowCoord(WorldPos); #endif Light mainLight = GetMainLight(shadowCoord); Direction = mainLight.direction; Color = mainLight.color; DistanceAtten = mainLight.distanceAttenuation; ShadowAtten = mainLight.shadowAttenuation; #endif } // //void AdditionalLights_float(float3 SpecColor, float Smoothness, float3 WorldPosition, float3 WorldNormal, float3 WorldView, out float3 Diffuse, out float3 Specular) //{ // float3 diffuseColor = 0; // float3 specularColor = 0; // //#ifndef SHADERGRAPH_PREVIEW // Smoothness = exp2(10 * Smoothness + 1); // WorldNormal = normalize(WorldNormal); // WorldView = SafeNormalize(WorldView); // int pixelLightCount = GetAdditionalLightsCount(); // for (int i = 0; i < pixelLightCount; ++i) // { // Light light = GetAdditionalLight(i, WorldPosition); // half3 attenuatedLightColor = light.color * (light.distanceAttenuation * light.shadowAttenuation); // diffuseColor += LightingLambert(attenuatedLightColor, light.direction, WorldNormal); // specularColor += LightingSpecular(attenuatedLightColor, light.direction, WorldNormal, WorldView, float4(SpecColor, 0), Smoothness); // } //#endif // // Diffuse = diffuseColor; // Specular = specularColor; //} // //void AdditionalLights_half(half3 SpecColor, half Smoothness, half3 WorldPosition, half3 WorldNormal, half3 WorldView, out half3 Diffuse, out half3 Specular) //{ // half3 diffuseColor = 0; // half3 specularColor = 0; // //#ifndef SHADERGRAPH_PREVIEW // Smoothness = exp2(10 * Smoothness + 1); // WorldNormal = normalize(WorldNormal); // WorldView = SafeNormalize(WorldView); // int pixelLightCount = GetAdditionalLightsCount(); // for (int i = 0; i < pixelLightCount; ++i) // { // Light light = GetAdditionalLight(i, WorldPosition); // half3 attenuatedLightColor = light.color * (light.distanceAttenuation * light.shadowAttenuation); // diffuseColor += LightingLambert(attenuatedLightColor, light.direction, WorldNormal); // specularColor += LightingSpecular(attenuatedLightColor, light.direction, WorldNormal, WorldView, half4(SpecColor, 0), Smoothness); // } //#endif // // Diffuse = diffuseColor; // Specular = specularColor; //} #endif