|
|
|
|
|
|
#pragma prefer_hlslcc gles |
|
|
|
#pragma target 3.0 |
|
|
|
|
|
|
|
// ------------------------------------- |
|
|
|
// Lightweight Pipeline keywords |
|
|
|
// We have no good approach exposed to skip shader variants, e.g, ideally we would like to skip _CASCADE for all puctual lights |
|
|
|
// Lightweight combines light classification and shadows keywords to reduce shader variants. |
|
|
|
// Lightweight shader library declares defines based on these keywords to avoid having to check them in the shaders |
|
|
|
// Core.hlsl defines _MAIN_LIGHT_DIRECTIONAL and _MAIN_LIGHT_SPOT (point lights can't be main light) |
|
|
|
// Shadow.hlsl defines _SHADOWS_ENABLED, _SHADOWS_SOFT, _SHADOWS_CASCADE, _SHADOWS_PERSPECTIVE |
|
|
|
#pragma multi_compile _ _MAIN_LIGHT_DIRECTIONAL_SHADOW _MAIN_LIGHT_DIRECTIONAL_SHADOW_CASCADE _MAIN_LIGHT_DIRECTIONAL_SHADOW_SOFT _MAIN_LIGHT_DIRECTIONAL_SHADOW_CASCADE_SOFT _MAIN_LIGHT_SPOT_SHADOW _MAIN_LIGHT_SPOT_SHADOW_SOFT |
|
|
|
#pragma multi_compile _MAIN_DIRECTIONAL_LIGHT _MAIN_SPOT_LIGHT |
|
|
|
#pragma multi_compile _ _VERTEX_LIGHTS |
|
|
|
|
|
|
|
// ------------------------------------- |
|
|
|
// Unity defined keywords |
|
|
|
#pragma multi_compile _ _HARD_SHADOWS _SOFT_SHADOWS _HARD_SHADOWS_CASCADES _SOFT_SHADOWS_CASCADES |
|
|
|
#pragma multi_compile _ _VERTEX_LIGHTS |
|
|
|
|
|
|
|
#pragma multi_compile_fog |
|
|
|
|
|
|
|
#pragma vertex vert |
|
|
|
|
|
|
|
|
|
|
#include "LightweightShaderLibrary/Core.hlsl" |
|
|
|
#include "LightweightShaderLibrary/Lighting.hlsl" |
|
|
|
#include "ShaderLibrary/Color.hlsl" |
|
|
|
#include "LWRP/Shaders/LightweightShaderLibrary/Core.hlsl" |
|
|
|
#include "LWRP/Shaders/LightweightShaderLibrary/Lighting.hlsl" |
|
|
|
#include "CoreRP/ShaderLibrary/Color.hlsl" |
|
|
|
#include "ShaderGraphLibrary/Functions.hlsl" |
|
|
|
|
|
|
|
${Graph} |
|
|
|
|
|
|
half3 vertexLight = VertexLighting(lwWorldPos, lwWNormal); |
|
|
|
half fogFactor = ComputeFogFactor(clipPos.z); |
|
|
|
o.fogFactorAndVertexLight = half4(fogFactor, vertexLight); |
|
|
|
|
|
|
|
o.clipPos = clipPos; |
|
|
|
|
|
|
|
return o; |
|
|
|
|
|
|
float AlphaClipThreshold = 0; |
|
|
|
|
|
|
|
${SurfaceOutputRemap} |
|
|
|
|
|
|
|
#if defined(UNITY_COLORSPACE_GAMMA) |
|
|
|
Albedo = Albedo * Albedo; |
|
|
|
Emission = Emission * Emission; |
|
|
|
#endif |
|
|
|
|
|
|
|
#if _NORMALMAP |
|
|
|
half3 normalWS = TangentToWorldNormal(Normal, WorldSpaceTangent, WorldSpaceBiTangent, WorldSpaceNormal); |
|
|
|