Question by
AgentArachnid66 · Jun 09, 2021 at 04:39 PM ·
shadershaderswebglvertex shaderdisplacement
WebGL displacement shader doesn't work in build
I'm working on a displacement and tessellation shader for a WebGL project. I have isolated it as the main reason why the build doesn't work but don't know why it doesn't work. Here is the shader itself:
Shader "Custom/Digsite_v2"
{
Properties
{
_Tess ("Tesselation", Range(1,32)) = 4
_Color ("Soil", Color) = (1,1,1,1)
_SoilTex("Soil (RGB)", 2D) = "white" {}
_GroundColor("Ground", Color) = (1,1,1,1)
_GroundTex("Ground (RGB)", 2D) = "white" {}
_Splat("Splat Map", 2D) = "black"{}
_Displacement("Displacement", Range(0,1.0)) = 0.3
_Glossiness ("Smoothness", Range(0,1)) = 0.5
_Metallic ("Metallic", Range(0,1)) = 0.0
}
SubShader
{
Tags { "RenderType"="Opaque" }
LOD 200
CGPROGRAM
// Physically based Standard lighting model, and enable shadows on all light types
#pragma surface surf Standard fullforwardshadows vertex:disp tessellate:tessFixed
#pragma target 4.6
#include "Tessellation.cginc"
struct appdata {
float4 vertex : POSITION;
float4 tangent : TANGENT;
float3 normal : NORMAL;
float2 texcoord : TEXCOORD0;
};
float _Tess;
float4 tessFixed()
{
return _Tess;
}
sampler2D _Splat;
float _Displacement;
void disp(inout appdata v)
{
float d = tex2Dlod(_Splat, float4(v.texcoord.xy,0,0)).r * _Displacement;
v.vertex.xyz -= v.normal * d;
//v.vertex.xyz += v.normal * _Displacement;
}
sampler2D _GroundTex;
fixed4 _Color;
sampler2D _SoilTex;
fixed4 _GroundColor;
struct Input
{
float2 uv_GroundTex;
float2 uv_SoilTex;
float2 uv_Splat;
};
half _Glossiness;
half _Metallic;
// Add instancing support for this shader. You need to check 'Enable Instancing' on materials that use the shader.
// See https://docs.unity3d.com/Manual/GPUInstancing.html for more information about instancing.
// #pragma instancing_options assumeuniformscaling
UNITY_INSTANCING_BUFFER_START(Props)
// put more per-instance properties here
UNITY_INSTANCING_BUFFER_END(Props)
void surf (Input IN, inout SurfaceOutputStandard o)
{
// Albedo comes from a texture tinted by color
half amount = tex2Dlod(_Splat, float4(IN.uv_Splat, 0, 0)).r;
fixed4 c = lerp(tex2D(_GroundTex, IN.uv_GroundTex) * _GroundColor,
tex2D(_SoilTex, IN.uv_SoilTex) * _Color, amount);
//fixed4 c = tex2D (_MainTex, IN.uv_MainTex) * _Color;
o.Albedo = c.rgb;
// Metallic and smoothness come from slider variables
o.Metallic = _Metallic;
o.Smoothness = _Glossiness;
o.Alpha = c.a;
}
ENDCG
}
FallBack "Diffuse"
}
Comment
Your answer
Follow this Question
Related Questions
Very basic shader problem 0 Answers
Should I use a shader or conventional code for displacement? 1 Answer
Shader for alpha fading 0 Answers
Shadows on alpha clipping/vertex offset shaders misaligned when using screen space texture 0 Answers
Pink Texture / Shader issues using the 2D lights from LWRP and building to WebGl 1 Answer