grass-rendering-prototype/Assets/Shaders/GrassBlade.shader

79 lines
2.5 KiB
Plaintext

Shader "Grass/GrassBlade" {
Properties {
[KeywordEnum(LOD 0, LOD 1, LOD 2, LOD 3)] _LOD("Level of Detail", int) = 0
_BladeWidth("Blade Width", Range(0.003, .1)) = 0.01
_BendStrength("Bend Strength", Range(0, 1)) = 1
_FieldColor("Field Color", 2D) = "white" {}
_BladeWidthTex("Blade Width Texture", 2D) = "white" {}
_AOStrength("Ambient Occlusion Strength", Range(0,2)) = 1
_Translucency("Translucency", Range(0,5)) = 1
_SSSStrength("Subsurface Scattering Strength", Range(0,1)) = 1
_Metallic("Metallic", Range(0,1)) = 0
_Roughness("Roughness", Range(0,1)) = 0.3
_NormalCurvature("Normal Curvature", Range(0,1)) = 0.3
_BladeWidthTexStrength("BladeWidthTexStrength", Range(0,1)) = 0.3
_InnerColor("Inner Color", Color) = (1,1,1,1)
}
SubShader {
LOD 100
Cull Off
//Render Pass
Pass {
Tags { "LightMode" = "ForwardBase"}
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#pragma geometry geom
#pragma multi_compile _ SHADOWS_SCREEN
// shader_feature is very similar to multi_compile. Use multi_compile for keywords that are set from code.
#pragma shader_feature _LOD_LOD_0 _LOD_LOD_1 _LOD_LOD_2 _LOD_LOD_3
#pragma shader_feature UNITY_EDITOR
#include "UnityCG.cginc"
#include "UnityPBSLighting.cginc"
#include "AutoLight.cginc"
#include "./include/Random.hlsl"
#include "./include/Math.hlsl"
#include "./include/Culling.hlsl"
#include "./include/GrassHelpers.hlsl"
#define IS_IN_BASE_PASS
#include "./include/GrassBladePass.hlsl"
ENDCG
}
// Shadow Pass
Pass {
Tags { "LightMode" = "ShadowCaster" }
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#pragma geometry geom
#pragma shader_feature _LOD_LOD_0 _LOD_LOD_1 _LOD_LOD_2 _LOD_LOD_3
#pragma shader_feature UNITY_EDITOR
#include "UnityCG.cginc"
#include "./include/Random.hlsl"
#include "./include/Math.hlsl"
#include "./include/Culling.hlsl"
#include "./include/GrassHelpers.hlsl"
#define IS_IN_SHADOW_PASS
#include "./include/GrassBladePass.hlsl"
ENDCG
}
}
}