summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Shaders/displacement/displacement.shader1
-rw-r--r--Shaders/displacement/displacement_lighting.cginc32
-rw-r--r--Textures/geometry_noise_mask_equator.pngbin0 -> 201317 bytes
3 files changed, 13 insertions, 20 deletions
diff --git a/Shaders/displacement/displacement.shader b/Shaders/displacement/displacement.shader
index 3c55ef3..6a47853 100644
--- a/Shaders/displacement/displacement.shader
+++ b/Shaders/displacement/displacement.shader
@@ -4,6 +4,7 @@ Shader "yum_food/displacement"
{
_BaseColor("Base color", 2D) = "white" {}
_Normal("Normal", 2D) = "bump" {}
+ _Disable_Normal_Texture("Disable normal texture", float) = 0.0
_Metallic("Metallic", 2D) = "black" {}
_Roughness("Roughness", 2D) = "black" {}
_Cubemap("Cubemap", Cube) = "" {}
diff --git a/Shaders/displacement/displacement_lighting.cginc b/Shaders/displacement/displacement_lighting.cginc
index efd9255..d0abdb9 100644
--- a/Shaders/displacement/displacement_lighting.cginc
+++ b/Shaders/displacement/displacement_lighting.cginc
@@ -14,6 +14,8 @@ sampler2D _Normal;
sampler2D _Metallic;
sampler2D _Roughness;
+bool _Disable_Normal_Texture;
+
sampler2D _Height;
float _Height_LOD;
float _Height_Exponent;
@@ -80,16 +82,8 @@ v2f vert(appdata v)
void displace(inout v2f vert)
{
- float3 object_offset = transpose(unity_ObjectToWorld)[3].xyz;
- float4x4 object_rotate = float4x4(
- unity_ObjectToWorld[0].xyz, 0,
- unity_ObjectToWorld[1].xyz, 0,
- unity_ObjectToWorld[2].xyz, 0,
- 0, 0, 0, 1
- );
-
// Manipulate vertex in world space.
- float3 pp = 0;
+ float height = 0;
float2 traveling_uv = vert.uv;
traveling_uv.x += _Time[0] * _Height_Speed_X;
@@ -113,20 +107,20 @@ void displace(inout v2f vert)
#endif
#if OFFSET_AA_LEVEL == 0
- pp.z += z0;
+ height += z0;
#elif OFFSET_AA_LEVEL == 1
- pp.z += (z0 + z1 + z2 + z3 + z4) / 5.0;
+ height += (z0 + z1 + z2 + z3 + z4) / 5.0;
#elif OFFSET_AA_LEVEL == 2
- pp.z += (z0 + z1 + z2 + z3 + z4 + z5 + z6 + z7 + z8) / 9.0;
+ height += (z0 + z1 + z2 + z3 + z4 + z5 + z6 + z7 + z8) / 9.0;
#endif
- pp.z = pow(pp.z, _Height_Exponent);
- pp.z *= _Height_Scale;
+ height = pow(height, _Height_Exponent);
+ height *= _Height_Scale;
{
float mask = tex2Dlod(_Height_Mask, float4(vert.uv, _Height_LOD, 0));
mask = pow(mask, _Height_Mask_Exponent);
- pp.z *= mask;
+ height *= mask;
}
// 0 at middle, 1 or -1 at edges
@@ -143,12 +137,10 @@ void displace(inout v2f vert)
float ring_scale = exp(-1.0 * ring_dist);
float middle_out_height = ring_scale;
- pp.z *= middle_out_height;
+ height *= middle_out_height;
}
- pp = mul(object_rotate, float4(pp, 1.0)).xyz;
-
- vert.worldPos += pp;
+ vert.worldPos += height * vert.normal;
vert.objPos = mul(unity_WorldToObject, float4(vert.worldPos, 1.0));
vert.clipPos = UnityObjectToClipPos(vert.objPos);
}
@@ -187,7 +179,7 @@ float4 effect(inout v2f i, out float depth)
depth = -1000.0;
float4 albedo = tex2D(_BaseColor, i.uv);
- float3 normal = tex2D(_Normal, i.uv);
+ float3 normal = _Disable_Normal_Texture ? i.normal : tex2D(_Normal, i.uv);
float metallic = tex2D(_Metallic, i.uv);
float roughness = tex2D(_Roughness, i.uv);
if (albedo.a > 0) {
diff --git a/Textures/geometry_noise_mask_equator.png b/Textures/geometry_noise_mask_equator.png
new file mode 100644
index 0000000..d5b22e4
--- /dev/null
+++ b/Textures/geometry_noise_mask_equator.png
Binary files differ