diff options
| author | yum <yum.food.vr@gmail.com> | 2025-03-27 21:38:46 -0700 |
|---|---|---|
| committer | yum <yum.food.vr@gmail.com> | 2025-03-27 21:38:46 -0700 |
| commit | 6d01be1827eea13d5f6cc66de763ea67e7fca631 (patch) | |
| tree | 9a1d4595ea76714783bff0ae813b886f598e288f /2ner.cginc | |
| parent | 36dbdde9a08c66c5be2e8b8b6c822968a73041b6 (diff) | |
Use 3d textures for vertex domain warping
Diffstat (limited to '2ner.cginc')
| -rw-r--r-- | 2ner.cginc | 35 |
1 files changed, 16 insertions, 19 deletions
@@ -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;
|
