Files
beyond/Assets/ThirdParty/Lux URP Essentials/Shaders/Toon/Includes/Lux URP Toon Inputs.hlsl
2024-11-20 15:21:28 +01:00

146 lines
4.5 KiB
HLSL

#ifndef INPUT_LUXLWRP_BASE_INCLUDED
#define INPUT_LUXLWRP_BASE_INCLUDED
#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl"
// defines a bunch of helper functions (like lerpwhiteto)
#include "Packages/com.unity.render-pipelines.core/ShaderLibrary/CommonMaterial.hlsl"
// defines SurfaceData, textures and the functions Alpha, SampleAlbedoAlpha, SampleNormal, SampleEmission
#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/SurfaceInput.hlsl"
// defines e.g. "DECLARE_LIGHTMAP_OR_SH"
#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Lighting.hlsl"
#include "../Includes/Lux URP Toon Lighting.hlsl"
#include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Color.hlsl"
#include "Packages/com.unity.render-pipelines.core/ShaderLibrary/UnityInstancing.hlsl"
// Material Inputs
CBUFFER_START(UnityPerMaterial)
half4 _BaseColor;
half _Cutoff;
float4 _BaseMap_ST;
half _Smoothness;
half3 _SpecColor;
// Toon
half3 _ShadedBaseColor;
half _Steps;
half _DiffuseStep;
half _DiffuseFallOff;
half _Anisotropy;
half _EnergyConservation;
half _SpecularStep;
half _SpecularFallOff;
half _ColorizedShadowsMain;
half _ColorizedShadowsAdd;
half _LightColorContribution;
half _AddLightFallOff;
half _ShadowFallOff;
half _ShadoBiasDirectional;
half _ShadowBiasAdditional;
half3 _SpecColor2nd;
half3 _ToonRimColor;
half _ToonRimPower;
half _ToonRimFallOff;
half _ToonRimAttenuation;
half3 _EmissionColor;
// Simple
half _BumpScale;
float4 _MaskMap_ST;
half _OcclusionStrength;
half _ShadowOffset;
half4 _RimColor;
half _RimPower;
half _RimMinPower;
half _RimFrequency;
half _RimPerPositionFrequency;
// Outline
half4 _OutlineColor;
half _Border;
float4 _BaseMap_TexelSize;
CBUFFER_END
// Additional textures
// Toon
#if defined(_TEXMODE_TWO)
TEXTURE2D(_ShadedBaseMap);
#endif
#if defined(_MASKMAP)
TEXTURE2D(_MaskMap); SAMPLER(sampler_MaskMap);
#endif
// Global Inputs
// Structs
struct VertexInput
{
float3 positionOS : POSITION;
float3 normalOS : NORMAL;
#if defined(_NORMALMAP) || (defined(_ANISOTROPIC) && !defined(_SPECULARHIGHLIGHTS_OFF))
float4 tangentOS : TANGENT;
#endif
#if defined(_TEXMODE_ONE) || defined(_TEXMODE_TWO) || defined(_NORMALMAP) || defined(_MASKMAP)
float2 texcoord : TEXCOORD0;
#endif
#if defined(LIGHTMAP_ON)
float2 lightmapUV : TEXCOORD1;
#endif
//half4 color : COLOR;
UNITY_VERTEX_INPUT_INSTANCE_ID
};
struct VertexOutput
{
float4 positionCS : SV_POSITION;
#if defined(_TEXMODE_ONE) || defined(_TEXMODE_TWO) || defined(_TEXMODE_TWO) || defined(_NORMALMAP) || defined(_MASKMAP)
float2 uv : TEXCOORD0;
#endif
#if !defined(UNITY_PASS_SHADOWCASTER) && !defined(DEPTHONLYPASS)
DECLARE_LIGHTMAP_OR_SH(lightmapUV, vertexSH, 1);
#if defined(REQUIRES_WORLD_SPACE_POS_INTERPOLATOR)
float3 positionWS : TEXCOORD2;
#endif
float3 normalWS : TEXCOORD3;
float3 viewDirWS : TEXCOORD4;
#if defined(_NORMALMAP) || (defined(_ANISOTROPIC) && !defined(_SPECULARHIGHLIGHTS_OFF))
float4 tangentWS : TEXCOORD5;
#endif
half4 fogFactorAndVertexLight : TEXCOORD6;
#if defined(REQUIRES_VERTEX_SHADOW_COORD_INTERPOLATOR)
float4 shadowCoord : TEXCOORD7;
#endif
#endif
UNITY_VERTEX_INPUT_INSTANCE_ID
UNITY_VERTEX_OUTPUT_STEREO
};
struct SurfaceDescription
{
half3 albedo;
half3 albedoShaded;
half alpha;
half3 normalTS;
half3 emission;
half metallic;
half3 specular;
half smoothness;
half occlusion;
};
#endif