summaryrefslogtreecommitdiff
path: root/serve
diff options
context:
space:
mode:
authorprospanclaudebot <[email protected]>2026-07-11 00:26:09 +0000
committerprospanclaudebot <[email protected]>2026-07-11 00:26:09 +0000
commit85cf122a0912b20a2217bf1cfc8422d85045034e (patch)
tree7c7c223fc3b153ec12918f3430830403f9f8e32f /serve
parentf385daa1b04a732c8a1a380d359fc33106eba9c9 (diff)
downloadplaneta-zhopa-85cf122a0912b20a2217bf1cfc8422d85045034e.tar.gz
planeta-zhopa-85cf122a0912b20a2217bf1cfc8422d85045034e.zip
terrain: 🌭 анти-мыло — чёткая ВЧ-деталь (цвет+нормаль) у камеры с затуханием по дальности
Diffstat (limited to 'serve')
-rw-r--r--serve/index.html5
1 files changed, 3 insertions, 2 deletions
diff --git a/serve/index.html b/serve/index.html
index d7132e1..de0690d 100644
--- a/serve/index.html
+++ b/serve/index.html
@@ -1273,10 +1273,11 @@ terrainMat.onBeforeCompile = (sh) => {
' diffuseColor.rgb = mix(diffuseColor.rgb, vec3(0.93, 0.85, 0.62), sand);' +
' diffuseColor.rgb *= 0.88 + 0.20 * fbmT(vWPosT.xz * 0.3);' + // общий детейл
' float ero = 1.0 - abs(2.0 * fbmT(vWPosT.xz * 0.55) - 1.0);' + // ридж-эрозия
- ' diffuseColor.rgb *= 1.0 - 0.30 * ero * ero;') // затемнить промоины
+ ' diffuseColor.rgb *= 1.0 - 0.30 * ero * ero;' + // затемнить промоины
+ ' float _nr=1.0-smoothstep(45.0,200.0,length(vViewPosition)); diffuseColor.rgb *= 1.0 + (fbmT(vWPosT.xz*2.4)-0.5)*0.42*_nr;') // чёткая мелкая деталь у камеры (анти-мыло)
.replace('#include <roughnessmap_fragment>', '#include <roughnessmap_fragment>\n roughnessFactor *= 0.5 + 0.65*fbmT(vWPosT.xz*0.16);')
.replace('#include <normal_fragment_maps>', '#include <normal_fragment_maps>\n' +
- ' { float hh=fbmT(vWPosT.xz*0.15); vec2 dH=vec2(dFdx(hh),dFdy(hh))*5.5;' +
+ ' { float _nn=1.0-smoothstep(45.0,170.0,length(vViewPosition)); float hh=fbmT(vWPosT.xz*0.15)+fbmT(vWPosT.xz*1.3)*0.55*_nn; vec2 dH=vec2(dFdx(hh),dFdy(hh))*6.0;' +
' vec3 Sx=dFdx(-vViewPosition), Sy=dFdy(-vViewPosition);' +
' vec3 R1=cross(Sy,normal), R2=cross(normal,Sx); float det=dot(Sx,R1);' +
' vec3 grad=sign(det)*(dH.x*R1+dH.y*R2); normal=normalize(abs(det)*normal-grad); }');