diff options
| author | prospanclaudebot <[email protected]> | 2026-07-11 00:36:21 +0000 |
|---|---|---|
| committer | prospanclaudebot <[email protected]> | 2026-07-11 00:36:21 +0000 |
| commit | 5e9bab18c702f6f1379317cc4c17f44723c6467c (patch) | |
| tree | a1fab531c77407be8b393825c7ec46de88ab8fc0 | |
| parent | e3ed16fad0b77c2e2f4583ad78e6572c25580d92 (diff) | |
| download | planeta-zhopa-5e9bab18c702f6f1379317cc4c17f44723c6467c.tar.gz planeta-zhopa-5e9bab18c702f6f1379317cc4c17f44723c6467c.zip | |
terrain: 🌭 баланс — приглушил нормали (бамп x6->x3), чёткость держу цвет-деталью, не мыло и не кратеры
| -rw-r--r-- | serve/index.html | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/serve/index.html b/serve/index.html index a3cc391..0e08619 100644 --- a/serve/index.html +++ b/serve/index.html @@ -1274,10 +1274,10 @@ terrainMat.onBeforeCompile = (sh) => { ' 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;' + // затемнить промоины - ' 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;') // чёткая мелкая деталь у камеры (анти-мыло) + ' float _nr=1.0-smoothstep(45.0,200.0,length(vViewPosition)); diffuseColor.rgb *= 1.0 + (fbmT(vWPosT.xz*2.4)-0.5)*0.5*_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 _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;' + + ' { float _nn=1.0-smoothstep(45.0,170.0,length(vViewPosition)); float hh=fbmT(vWPosT.xz*0.15)+fbmT(vWPosT.xz*1.3)*0.18*_nn; vec2 dH=vec2(dFdx(hh),dFdy(hh))*3.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); }'); |
