From 6d01be1827eea13d5f6cc66de763ea67e7fca631 Mon Sep 17 00:00:00 2001 From: yum Date: Thu, 27 Mar 2025 21:38:46 -0700 Subject: Use 3d textures for vertex domain warping --- 2ner.cginc | 35 ++++++++++++++++------------------- 1 file changed, 16 insertions(+), 19 deletions(-) (limited to '2ner.cginc') diff --git a/2ner.cginc b/2ner.cginc index 7774084..0ef94b5 100644 --- a/2ner.cginc +++ b/2ner.cginc @@ -79,6 +79,18 @@ v2f vert(appdata v) { shatterWaveVert(v.vertex.xyz, v.normal, v.tangent); #endif +#if defined(_VERTEX_DOMAIN_WARPING) + float3 basePos = v.vertex.xyz; + float t = _Time[0] * _Vertex_Domain_Warping_Speed; + for (uint i = 0; i < _Vertex_Domain_Warping_Octaves; i++) { + float3 uv = basePos * _Vertex_Domain_Warping_Scale + + _Time[0] * _Vertex_Domain_Warping_Speed; + float3 noise = _Vertex_Domain_Warping_Noise.SampleLevel(trilinear_repeat_s, uv, 0); + basePos += (noise * 2 - 1) * _Vertex_Domain_Warping_Strength; + } + v.vertex.xyz = basePos; +#endif + #if defined(OUTLINE_PASS) [branch] if (!_Outlines_Enabled_Dynamic) { @@ -99,24 +111,6 @@ v2f vert(appdata v) { face_me(v); #endif -#if defined(_VERTEX_DOMAIN_WARPING) - float3 basePos = v.vertex.xyz; - float offset = sin(_Time[0] * _Vertex_Domain_Warping_Speed) * - _Vertex_Domain_Warping_Temporal_Strength; - v.vertex.xyz = domainWarp3(v.vertex, - _Vertex_Domain_Warping_Spatial_Octaves, - _Vertex_Domain_Warping_Spatial_Strength, - _Vertex_Domain_Warping_Spatial_Scale, - offset); - float3 tangent_tmp = v.tangent.xyz; - domainWarp3Normals(v.normal, tangent_tmp, basePos, - _Vertex_Domain_Warping_Spatial_Octaves, - _Vertex_Domain_Warping_Spatial_Strength, - _Vertex_Domain_Warping_Spatial_Scale, - offset); - v.tangent.xyz = tangent_tmp; -#endif - #if defined(_FOCAL_LENGTH_CONTROL) [branch] if (_Focal_Length_Enabled_Dynamic) { @@ -170,7 +164,7 @@ v2f vert(appdata v) { } float4 frag(v2f i -#if defined(_HARNACK_TRACING) || defined(_SHATTER_WAVE) +#if defined(_HARNACK_TRACING) || defined(_SHATTER_WAVE) || defined(_VERTEX_DOMAIN_WARPING) , out float depth : SV_DepthLessEqual #endif ) : SV_Target { @@ -187,6 +181,9 @@ float4 frag(v2f i #if defined(_SHATTER_WAVE) shatterWaveFrag(i.normal, i.objPos); +#endif + +#if defined(_SHATTER_WAVE) || defined(_VERTEX_DOMAIN_WARPING) { float4 clip_pos = mul(UNITY_MATRIX_VP, float4(i.worldPos, 1.0)); depth = clip_pos.z / clip_pos.w; -- cgit v1.2.3