From b5d13180a64c006445fde63322be9adb12e8fc93 Mon Sep 17 00:00:00 2001 From: Orkuncakilkaya Date: Sat, 19 Sep 2026 16:29:17 +0300 Subject: [PATCH] fix(render3d): the ground keeps more of its own colour, and the rock keeps all of it 55% of every ground pixel was the orthophotograph, at every distance and on every material. A survey image records WHERE the forest and the scree are well and what a steep rock face is coloured badly - it is shot through kilometres of air at an angle no player stands at. The photograph keeps the meadow and the forest and gives the rock back to the rock, by material and by elevation and never by distance: a distance fade used to live here and was removed because the photograph has the day's own shadows baked in, so grass grew dark patches as you backed away and they slid as you walked. The far tier's rock fallback is the maroon mean, not a neutral grey - TFAST_3 skips the rock sample and leaves that constant standing in for a whole mountain. Ortho-classified snow needs altitude now. Bright and unsaturated is what snow looks like from a satellite and also what a sunlit rock face looks like. Gully snow is gated on the snow line rather than two absolute heights. Distance desaturation eased 1.9 -> 1.15: tuned on a valley whose rock was grey anyway. NOT FIXED, and I want it recorded rather than implied: the Bells themselves are still not maroon. The near and middle rock is warmer and measurably so, but the distant peak does not respond to ANY of this - not the rock tint, not the ortho weight, not the snow line, not the gully gate. Painting sA bright red left it unchanged, so whatever surface that is, it is not this shader's snow and not this shader's material blend. Somebody should find out what draws it before tuning any of these numbers further. 400 frames: GL 7.0 s, VK 7.2 s. Backends agree to 0.62/255. Co-Authored-By: Claude Opus 5 --- changes/the-ground-up-close.md | 26 +++++++++ packages/ludic.render3d/daylight.ludic | 7 ++- .../shaders/spv/1f95f31b.frag.spv | Bin 88156 -> 88828 bytes .../shaders/spv/2e2908c8.frag.spv | Bin 90056 -> 90728 bytes .../shaders/spv/5e4589a1.frag.spv | Bin 102820 -> 103492 bytes .../shaders/spv/a0f2dbac.frag.spv | Bin 102820 -> 103492 bytes .../shaders/spv/f2952361.frag.spv | Bin 104688 -> 105360 bytes .../shaders/spv/f4382918.frag.spv | Bin 88156 -> 88828 bytes packages/ludic.render3d/shaders/terrain.frag | 54 ++++++++++++++++-- 9 files changed, 81 insertions(+), 6 deletions(-) create mode 100644 changes/the-ground-up-close.md diff --git a/changes/the-ground-up-close.md b/changes/the-ground-up-close.md new file mode 100644 index 00000000..9aa4dabd --- /dev/null +++ b/changes/the-ground-up-close.md @@ -0,0 +1,26 @@ +bump: patch +type: fix +The ground keeps more of its own colour, and the rock keeps all of it. + +55% of every ground pixel was the orthophotograph, at every distance and on every +material. A survey image is a good record of WHERE the forest and the scree are and a +poor record of what a steep rock face is coloured: it is shot through kilometres of air +at an angle no player stands at, and it comes back pale. So the photograph keeps the +meadow and the forest, where it carries real variation nothing else knows, and gives the +rock back to the rock - by material and by elevation, never by distance, because a +distance fade used to live here and was removed for a good reason (the photograph has +the day's own shadows baked in, so grass grew dark patches as you backed away and they +slid as you walked). Material and height do not move when the camera does. + +The far tier's rock fallback is the maroon mean rather than a neutral grey. TFAST_3 skips +the rock sample and leaves that constant standing in for it, and the file's own rule says +the cheap tier must keep the near tier's mean colour or the boundary shows as a ring. + +Ortho-classified snow now needs altitude. Bright and unsaturated is what snow looks like +from a satellite and also what a sunlit rock face looks like, so faces were being painted +90% white wherever the photograph was pale. Gully snow is gated on the snow line too, +rather than on two absolute heights five hundred metres below where snow can lie. + +And the distance desaturation from `light-air-and-the-hour` is eased from 1.9 to 1.15. +It was tuned on a valley whose rock was grey anyway; Maroon's air is thin and dry and the +peaks are two kilometres from the lake. diff --git a/packages/ludic.render3d/daylight.ludic b/packages/ludic.render3d/daylight.ludic index 5f5b015b..7b404a56 100644 --- a/packages/ludic.render3d/daylight.ludic +++ b/packages/ludic.render3d/daylight.ludic @@ -164,7 +164,12 @@ function daylight_set(hours: int) -> void { # the glow a ridge is silhouetted against when you look into a low sun r3d_fog_inscatter = f_mul(f_add(fl(0.012), f_mul(fl(0.16), lowsun)), f_sub(F_ONE, f_mul(fl(0.7), oc))) # and distance takes colour away at every hour, harder under cloud - r3d_fog_desat = f_add(fl(1.9), f_mul(fl(0.6), oc)) + # 1.9 was tuned on a valley whose rock was grey anyway. Maroon's air is thin, dry and at + # 2900 m, and the Bells are only a couple of kilometres from the lake - in the photograph + # everybody knows, they are still plainly RED at that distance. Desaturating them to a pale + # grey-pink is physically defensible and loses the one thing the range is named for, so the + # basin's own air gets a gentler figure and overcast still takes colour away faster. + r3d_fog_desat = f_add(fl(1.15), f_mul(fl(0.7), oc)) # ---- the grade ------------------------------------------------------------------------- # The look of an hour is not only how much air is in front of the mountain; it is what colour # the light is and what the shadows are filled with. Noon is the case worth naming: direct diff --git a/packages/ludic.render3d/shaders/spv/1f95f31b.frag.spv b/packages/ludic.render3d/shaders/spv/1f95f31b.frag.spv index ab6bfa0101b48b897e5a6d1deda0e1082c5aac1c..de1f0a0342ab2ec837c3920ec91bbcb488a01632 100644 GIT binary patch delta 23462 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 J#9K0H{tt3|O3VNN delta 22578 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 diff --git a/packages/ludic.render3d/shaders/spv/2e2908c8.frag.spv b/packages/ludic.render3d/shaders/spv/2e2908c8.frag.spv index 4cee9aebbc9b3424753d9108dc24bf2f96179733..ea3749cb48879d2772f4850581ced9364d120afd 100644 GIT binary patch delta 24898 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 Q=1s8Kf5QwAZ_mv9KdFVbz5oCK diff --git a/packages/ludic.render3d/shaders/spv/5e4589a1.frag.spv b/packages/ludic.render3d/shaders/spv/5e4589a1.frag.spv index 0bb4efa2740e5a4b05cf3001600e6e8a3e37cee3..8b0741f25d260805571aa360e7f9343a69e640df 100644 GIT binary patch delta 23257 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 AX8-^I delta 22628 zcmZ9U2bfjW)rQY7Gk^$4QBhG)P^_Sc4H1!|SW#@KL2-13qBI%6?hy_4KI(`a#a_`^ zV~HhEV~dH2i7}SMl0;2RjETt~&HujVo^{=G=Xo~g`_@`}?X}k~XWu<{c>eazD{k)G zqrTJNE?HKWt(tYs9>285l*UE9vh4nqv&L+eH}=S~8H;AmK5=5x!j>${8ngPWC$i@G zClt7Mfln;(>e`O2*sLj@RKaVB_pjh}zza&7b;YI40C8zE5Zqd^IV{^yQW|X}E{!$@ zFIqf8s3%d%%T*6`&u z{H6}PK3f4l`sm8QzND@k*w@9CG3%MVAt?r}F?*|RgQ0!%Un5yGZNa>wkDX>N2&*ys z&3CeKp6*6{ah`0s1@hZUYzNAjZ@gO6+YCmncw_8EN9;;oB3eg$4I zwt~C$bRvrzvSHvf=&fq_@SbaTG}sP<)`bh27B*#Vs}9?C`0Sbrb8Gm#4!kitxozdJ zzCF%G+BEy9BA3hB-Wb+5U#?xtQBxwDw^TSoR2lp`DtuD#pTb*@UeMA~3}Qp}ruroN zzpCMH)$qF2TsCvUf1Y(lFmJ)anezz2%yfaXDrU_s16UQFHqfJn_pIS-)bM^ae60?A zd_%TD2SGzNxQ1_7!?&#A!`qf_IdJquq)kW7TU^=w8nQh*Sk-6y!jErRSafj;c>1i_ zb1FG)%noZ?vQ^*w@D4Q^vtz8$)H<`=Qj404ko1r!cLv$B{@d{4by9}?VU7LA9eJL8(m_z4eF<+`Fb8M#Sv_y5O8E8Js^D>j)B0>R z@Iq#p4GsX$-EVf&+@=LZoni9QZY;QIUd3(#c)`3yGu-v9w>x}JOTMsab}85cLF>$> zX5SMU>r_?7$j+aPYir{E!fo{ID86wT2&2!;h@t z&G6=XvAi zY$V@@x6Yn7KNi$E@a9>q3o)l|V|EdI@vN5PC$!9;w6HQB_1V=3BYoF`Q-{~r@EdFR zO~KoikLZ`*8mtWO_8NX?4ZpjF-w&TRjacS6qZ+c69rTUaqwq!37Pd~C*)nU!OjFgE zJyytC7tL**`QQuNENaX>BWzFvkYy8bA|GS|_>p^FP~SP>sh+b#p>HVl@>Ks;sqbFu z<%vGedK7H7=X?nJ7m_r<0Bf1G}%C( z(!jK(4osPP9)*L)9-K33)aoNU8*ui)_|5TYa=OS*A2eYL*rvcW;P-aQvUMpBQ$pUa zt!}@5`Pyiw)n(a+hNW+VC+xg>9 zaOY3TogW$PS9>r6!RT&p?Hqy3gexwiy@vj6y%6aJ)L2bKo2C z4E=5JrJwe$wsSi?UqPx>oRCC(C;Zh{E~rL)7kv8kv#J&EhHInT9!CRD!9SaPLbcv= z@K;}XWv9sK^YFQ3?Kav{N4=ekDf=>H#E8~v#aH0_KRTe=;Hz+L%!ayf`17_8_V1Uw zlKqL1cHySnh3Zd)Ie>-v>MPxM3BDox;%C3wDfnLS>C=Z)qd6R&Wj9vyd_=)t9A8F} zXUz!iXN`PAzwBE$YC(SSvx}-zb~^mti64xP@MplaSwUTOQSTV=t=CMbPGxrze?os# z!Kaoho+)%Ig3l&DT5aey_;X*~UY*Lf!?hVqL+ZlOD`0w7?dhxV5hL2Fd4CPAOW{BH$HRb$kk(saJK}R_Nc~B^*2l|7`LORsEarsTYr{cHozA zZIoML$Qs&K9@H=I&lc?7WceZQgYdeeTXVK%bt@iK@TLjtvnL%5Hd41_XR6#ohqB-v zI^^2VEOF@N9zx)GwSotbsIU-BJk)}sR3{LL*O4+EaUuB2&{p3%qyT{sockt%9XCSUl3h8D%J@*9f3is?2d=T8TPs%;} zq};PlaQ%7gNx4U#gy)%OpAgu9XP=aN_DT7Qgnx^@r=if>pr@gfdm0L^e@{cfH}i$! z@khaE66a_yhC2{DlRmQ}AIlNQ%EyD1UB@VC?_iz)SFX)TowDpC@NqmHys$YLto%`I z9Jo`!);l@ppMTNNX*~V;4^CB{N>TQ8)~Ue%WnPGt>C}MF0KdufFi?j{K9UCP#F^kb zcq&)#uqum=ECnmuC+*2u2vnSj6MJ?x*mt{fojCT&B2(vr&4x}}>G64OlMn5ipO54` zie3!m0~S7lNJW<4V2Wok_~|_9Zj-60mu6(%a%J@TFko5y53(BbZ!9+}4W` zRp?I$FNZ6$!H`{1%J7-(M>btKS0ckfroDQ*ekqRCwZm;(oA7ZJSh+rO0<>exdNHF^ z*dy1%GD<{y9oT5qxenx^y8-NgsB=lk)#-FO*xajgdB{U|GuX_jbE(|yj0)u~V1rQU zx{-@rGwvNDvu?!@-3FdOZw<=EZA53*(bhUHWbGp0JHX1+x#r~Ra>x8GNc7YND374- z0Y}6xM)^pFz#2{%)kWhEfTMBOue_Z4dG;V=C{9$wSp5L3+@Fv=RLatM z@o*_i=fxw)tgpR#=Y>JJ!>ap+nY9DOYl_aC%Ds6` zxwp?LU#o_D3!Un{iB5Q)4d^Jyypm1~id*TFdovx}eShN`zC{i9hC1vAVebv~cbrAA zLkB^Yc~SkH0UwDH?mq4%b?6PiOX}cjz$YhM`$H10y_e2m-<9?=Z=I_G_z?;BMR8;e zZ>r%(CEOl*4;}u#V1K$a;RbYl!gC|KF%ig@*YKMXZa`i}M+0&%q*LytbjsgIxB+v5s@^1rsa3s64sKO%l7ri{cgVqYwXBAFqa1qey-`lN zH_9c?iwt_D90msDm2z+c@=7_l0ePhy+yJ~%PPsSADfdP>xc_fp^a-_ue_U0ekNp+#Y)G9NhZeI|tX^d*|TV zd+!Xd9NO)n_s(IU1Mi)K>%e>G;5xWF;nu$=;nw#?I_$0QjdXD9dn4V&gQ*$NfmhOD zpaZX@Q|^^?a2P6Vb^Tk6 zZET{FPpIL$*YG_OZY+By-1>Xh@Ja1WG?i<*f1;8fSi=uaxULSV;fK}msWtqF8h&KS zIfFcM@`SqOy_!0)3BJSyLU)#`=d^mbhl$}7ubaH2(`IRLFvzk7^%U(qK%9?W*}pkL zwt+q1`;0?+*Y-CKs_UDtf=O3OG}8?n&3K#Gg`!OyuvP`{f(t5!Q8OHu9T^=X1KBeu?O548hLWZq}9=VNp;PI+c z>|v*0i9P6e$*J5!PX8X$D#R0xx0xzD+=P(_o57`gL!RNt1C5uH5!fc$(20GS%1-7@ z;mS5?Kkksaz9TmWD%y-<6P|yRMfIUz`x@1Uft3xdRNoS)D5`s0QWn*RgYAA)-x{oJ zcu_qc0aO&#JzXiYx-)BA@DheD_;&EY@a}X){q}H&c$3mry}j^MrY`D@1P@RA>>cJk6;KN29^x5=T43oz9^j19u*U-(A4rS6lU=8{31;E|faf*hW1v zj-`atabSD&IP1wz(G$SR##8(dy&F$|{1B~fSBf&%l~_N{-`&CKRM^ASrEvGkXzT^t zgR&=OKiYD->G5^FvOMe(G`b_J`L~ zM|+}1mcr#y6rgST)r zRC<0^5Xxy_=cT$Mc*;j+J;^P<*a8nB7#s5@|6s}#iVf&Td(YdRv5%tY(~)Q{<@#J5 zEFbOBLuCuZ3M$++`e)ud-(B)7E@wRJ^^gozAF4hfqSwx z5%Y;)ZK6cXCn1ZN=Ytngw2kmi2B+bj0!Nl-R*d)*MzV77SUg5xr^6$#W&CpPG`KdQ zUsCE#n(sJ23|lAsoeAD0@%R10o+)Kd&w$udjbeT;1?yD9aB`M1c9XC<8?K#lJ8>#c zWhU7xw{yW>6`jK~e4GbXUThY$pPdg;7^CS_xd5)S*ikM7D|1J=4d<@ti@?@Z=Pq*z zPk-EH)Ll$b<}M>P0B6Q!;Miq)xboT%D7>tFgK2er>n?Bq;E1}uL$5%h=5k6@y%OA$ z5^sxku(B&FHLt4FT!uu=Rg|cCH8_3GTmx5jb*1LDMa}#=BxY%F-rQ*8N~@qQuHtS=Mu6yRz=4Xd4Ut z0kC0cXFr@i54y74YGR`P0PF-uQQfQ`0(&M6K`VGFi(z~O>@p7iC|H~5 z`(t49_rH2(c0}_y0u}LI{UO*)cqmY3U}5_N+=(B7KMB@edB~myD}Ra-+4~V#d6e#X zIfBn1v@z3X^hT_)y|X9kJ?F+s@fp2)7971btv`mJn=JpIz?J#S%LwEJxbob8EHRER zf+G+eKTpv(0#R=uyYY0%`iww+3O0}!^Vh)2UZq(7C7#N{{%4N=nx*n}o(KxVH+cS> z66yX0cn3=CGjD>GxzD(#{EDYP?kVbiNl|8iV*R*Ce+!O9`ZoBtzN{mf-yv|rG17Oy z^3c5p?x`N#yFBHg`vBa#)VlWL!J{o!sJ;mV$8BXBG?u~qk4<- zYszmZ24aIc)`1m2qI^vGgc1$?sg&z{9k4ufe+Fx>Ze5=8&~5uEL`NzI@RW!0bL9jT z`{-Zb%04g7d29R?sAx}0tgJ68pSk{q=nG1$g};N9Ibd-l{1U9(vV@m~d;CAZx>aXH zpYc>?L@%KKC)o7Jwf`4bn~3;pFyqvx8uGspDEzu|H2n`yQ5y39!5!Q5S2_QME06fU z0V_-6{}!&?67l~JY#Zt#CeC>APHAszuG_Rv+IW4TY=5n}Zb;qu_OF`jHqQ?!-w0h% z*BM zXLf8vyU5O(U~Me^M0Vm8(hs>dejtfWaV_|?_OBLl;9MK1i6Rr~t*o->|2kmTS@8Zf zd|kMM5L@ATaBY-F2m`^&{f0(_us)a+WN*x=OZ>l@n7wuHoH?IpO}q3{CS3Suw6|D1dj+!|g_Pqf!geFQTC z>^H)+iD0$?`|TxlF)Z7HbJMNTMjU5_k+SWT*Q9y}WXhwlkzi$h(J1Qe2(L}`C}hf` z-cDd-J7z1X7*UQ!s6&-8;dTb=EEdohxut!1b6wwVy8snU?c9FZth%l1K5YN-EcTYU z)Yuhqc%BH>`)-u@afp@{Kbev6whhM*n)0Ih~P59j(yrPb2rD0S$ zpsX~EVEiCvLmEbo4+J~-F*6Q=E3;lq3}s<|FxVIDSf=_Qd`^LPqg2LQ@2V0HF3GBXXHej+^*9+}AxhxmmqjlxM2SVtO~azA_> z1-3WpoEOTD2J2|oQf~(At@6mgOmI3YXTg=Y|cMoyBlv){D8J%(HSFMSYIW_|=sA;PEJTLJ()#6X41`VtA%K3G9z&T6HH< zlzFBV8;D1uQ@|&e+(1qRr$cZWT$#n6PVILz*R47TvNMY+`BI=FtHhi8EVw}%fp2czY8P+rv%%U}{Baam(bf5S4svb$ z^?;ckNWzqv=}3@IdX*PLa~@>%BK4KbpAYwXBo@F0aBY-FDlP>3aYgQET?F^WIO<#s z*G73PnoGd?QdjZAdcPDB2L&Bn2KNd%9JRrXnyPboURB~{Jl#)p=nA|VegO`hd)I>faqcO~!Hg;k;Pxazkc-~&(J9zd>GIVFp zY;Iv3E9@=|5LTnR2kei%RChN;nZbz-&J}hqI6ic^!tR5oE9`!_vimB_WF=6M*L%9K z$^-CpWjzR2_CTe|4}gl&Di6WamGv-O*+Z3;^$1XrRbpj53O86IaAoOMyI5I|fwi&t z6DuqBu*Z>W6B#wT$|4az1ec#81{B?T0zsOIC*jJTsC4ToprW)}Ps7tp{0Oe>=}MJn zfQr&8&%)D8JO@|yY*A&_^FT#uCVmVzS|czMy45Z+@e{B%7JniWv6@~$u1)&s;Kla8 zEv)O8zl2!zixj7z(@vS&Ps|>lG4wBk(-+0-aAmJ0Ha`QK?5OhwIL+(N;mRoOH#gVy z&VK<>=y$2Df;sq8}JHr+QcjLZ7@f% zJX0CT`YqTVs5BV2xp%-W)OgMQ4y-Inyk_4;X7Yzo%#6OYHQ1l>R3BM+4}5OHd4;;F z-iK%ujeY=jI|}}LxO;7UA@dJ#&w0wDmmh+yr!MM!3{H2WPv8dWZq%2If0QH8C=QZ; zEDeTX;576jg_WX_KY?vXyU56&!OEjVMm|Lr8L`K9Qd=`(@73p#lFuONiSu*#9hB;c zlYssLS3b5pmHxG~Ne`S~AX6T}{S9nAv!yQ1fPV)g%8NswMv<~F!D;IM0eAc(17Cr) zQ692?f|dIskB0vRR~{v@@-?!^%4dE&H4=>@vVWHbo=!D3U1mmk1og|8^yXW*GRHo8^FO%qDAAjYuZ%=*Y)I$Y#u%%Q zhC6``xmG)x4MwM*mr zFI-ulO025`3lZPRv5K*-i7aCEt6Xy9^J`q%i~R~$8td9{W7S?e^%3hjV6SDhiCFuC ziFZh*GGbj9oW{ByT-mxstZNJaD)P@`;*Mir`{Ywd`TB@e52Qpl27#j+e#1;|=zhCQ zd$HdvOK&Z3b7iX=NBT z2P%4!*J^ZaDBQnwvFO@M!(m`;)kQzI0!KgnVw~K*`K37R#eN|!9j+1ZuJl8D?DE1O zI=T%)4bqNoD`%5d7yaB0Y+u#cNEe>UqR-od)5X36{2azky=!hqxXWy5mRA&`P4VuUKA z@o`{#74PKnVC|HL%>=L;MC?wxf|W&y-Dx*u204skX7r`4nafR+2JV~Jg55WLjxFCV zyK6}8^zE_-GUW#1dwZ|aCU&L0;mR!j(BY!7J>ly7YP!R)kK=z6Kt;@fNnjg5SyY@;r<2KGdsn>75%?KM8+*4ePxVoEf3UJxLJIufk>RRYn^VPIv^fhKUQj*&V!suYBSqv6Wzc~okK>nJ8$OMBB2 zPS4X3*_mM!t7+CkiO$ae+oz~D6Ra#s%+XoM!jJLkSKCOa`tUg$TqczNl!AumAh5C- zJr-<2HHr%J!0GvKequkLZDB54o0t~If%U1K0UX0qS@>H3R`$5thwrUch{E`sya?=% zpG4Iyq$qQ7iNn$HV0#jOE^`7{Sp;$-SlJd77i97GRA9f{(Sx3kZeQ>0x-OGXMsyM- zs+|f}b_yky)oEbesk3> z$H!Y_DO|b5{m-|^Sz?MhqcC~rfa5K4HdtN^J5TLLGRBVbdEg$5EH-)ZHRfpid=!4L z)4+x_z5r~O)x|~lggDbnV zlDo@+irOfVyDKWWyAshAlxV&ktjza9zl^q;X7kJpzv!R?tv`2<8T`dh-#vxDl>gnGP=jD~oA#6F5!9&2VKmRZ_76sAvi& zj7Y^Tl~mk{_!dgEej8YsEk!DBhby-jk*T;t8;ZI}#a-Y?#hqZe(caBdd+|LyJEY=X z1g63Y8fp;1+y_=~Fp-M;;mVcia5-36q~ZZ^nu-VE${whs;s-!QBPo%JhbpOf7|}zN zX#EkeGJp9IsdyBw+!C|mF|cmcMJj#>j#NAjmK*I8Jhc};$@4=_GUb;p^Xw@Erosvu zY7oIZ4OX9~;zw}hk&2aIWd`92d=`96!k-75u6WJ<7)*1;rhRWG-owu!&?p-H3D~oi zhT-%D@M20hc@Z2={G9YMYg?P}@e;T*a_z#$Pr(KoK3)dqx_x z2(N+-P+i!)2DaDgqOsS(u9vX+8Q9-_DGy(7fODf)8HPUx>rkcR^$bsCI(F~=1vp;f zru$cLZK79ifz6D6AFa-JqNka75&s&QHf8ZE&y}x%{-&(x8{I~JNzvFKY*4+2#dx3j zRQEPd8;PF(7T(Bk#BJ?6aAon1d>8DG@5pyn8^JXZ0)@UL#nIFE!0DQLAFk}ZVol{A z02QSlV15txSEClQ?4I!lWZJ6JwXdF!z_Cz11k3Hq$2_$cf5J0aDA^z3et^*)yUPD) z6j}chLUhGcdWFt=uCziV<R4_II7s#jGj$Qr|G*n1e)vLHhhNOp!L?D2pUSVKIze=%($stjRu)bh!DGndSb8vsx}8g& z-s^QiraXqSE7*F<-R$_7xj99*G#h0+rO_)$G8t%qu!LL)EDg60p;#htHaYVUIVU;@)(*m z!TM4ce)@qoO#G|`uN&81cL5(nqTV{lth+WPWb1;J_ou}D;(FjnntD6yA95*=_6CAY zQjFUAU~SS-+W?L{uMXQF1XffLjs}CxWH{OotfTZp^+s^zG5kZo)>9rG*%+*Ub>Vvx z@R+*xZWq?|?5xizo!SRn$hXgywC{Rh-InQtzzR)&UyE zQ+Wix16Wz`k>Hr+c4ntu{8xqPC%@4c*r=ZrcLa~3>_myT;?7`gqC~J`kVUXII#u-_G|eL4?zL#8}lDHFjq?TcKU2SQ)u_{)pG zC)7aa{w-m=fL+piDX$n7e@7^fQQZe@UaaTe6v{)lFL+$3n*^4}pXTfb9)-@oOWfQ4 z+d%`J_=k%sVfRH| z?}5#LO8=Bm9=gN9re2+Y)+i6%G_b*|^G_V*p=$z1CXNKlM=~&G_b70_3}El;0%6k=CUEC`C&5J5rgiekeGxo|HA6}&#d?yl5Ha?od$?Yr-9(vbH>wf z+iVALBjl(e!M543lFuu6yKGnZ)TXA!U1l`QoLOpnHZSPibnfgy zYxwjUKBI=us^PP1_?#NP2tKx9#`LCHBfUj=cD2IvN=NUgalWgD-(AD+X~pZa#qhCX zEBEz%ZRLIaleoNPpNflH)-L%f4KyHB_{=*;iIg zM*bf){GT=an;QOY4gapf531hE?`s@>sNp}h;`P}t@Y!=VcObK6J2{Ulcun!}&71e= zyJfx`c;>7b4YTNmQ*(cK+KB^e_{bW5LJdEuhA(Wz+hvR3vq#Tl`WCaVc}d@P9WO;| zm^`K!*jt-l>Dx8G*IG?uM#j)SP~qIKN|sA1e0cDW;4{b0Xlg3%Xxr>_?a8h9vW90TF6G$@X7FoG1KN$o`h|)X|3$_*(~_nrddT7j|GpLIC)BCOxtC7 z^McK~Zn>aUjdt1D)@YbHp?tg+H7`V)+%SFrxEnV%@78ba{4V1)HqBCY2p?`0scrU1 z4S%$TKWY6b6C0!ci#7I_Yxpazd7iytfTqUrO++w(4_Z59AJy=WYxrl@pD}Ujct+3q zKf#MvOWC3JymZpLzg#Pxx6PJsCDdo#;0-gT5Uf7y1+Mh0KI;n}S_G}nHV4mQmf7GC z@YH=KH%x7qQPdeBFZ~+94bv)q9Z}!{$y*O zXHT~lvS(}fb2a>h8varZe+@ouH0e!qBDKw4Z)IYnQ!u z=R;fM?Q-`E>lPi)vR$Yv@8L-Bk-K-$zD&YX`=rv|wzSJr`{$*-Lur>M_B`|TYXe-0 z2IYxE@haB7LTUHaoZ5ZkXlL~n_2sGE8L<{NKX%B$TFU#kEk?%xT}lT>D-G}-TsxN{ zzJ_2nGw~~(9Lf;l_@ULk!ZD26^Mu(kKO?V`H zT9^8P(ScF$Yc6_X;6R4)8HUCAmt}dDh2RAA6Wj^rCjuM;AGG{i)e$%ru4W>RZzMP$ z&1BSc}JWh3B8&E{5)H9HugC*U}iqYQ+!1{rk_X zHt-Q#&EC5_qW)*ix9{6Mcjfzu8|gw%xeMD*q}7jw{KE4cb_l*T{G7+W-7fej__%Ss zs%cM$XW3=daXqr&&%^@Ev$+U|o%2|ADjo$tX63%snKKWrkGkt88af*O@zE<+8#)HQ z@8V0UagK$vM5=M-!>yyAwn`kP)bWsOE*e&y>prUdL_>=UepqCjJqZ7D#Nuj055XV* z_PT0A55x88$u!p%asC8mB&rF20`H&qZ?4{`PZ4zL%1zZ675@v)vR$hQtja@m(DL1@ zfmVaxvdhPV;>NBnr*ZwXMVubsFGp-st=AJy|Ie%jUJrpaFf1yJD0t@~!AHSaGu4ET zhu_1LwUPAJoCD`^RUM&o;k=xyaV~>1lTBoB@sz%|aQJA4Xy`lmVdo63HuOE*?A0yN z(+!&Y9nd`=%saq`o8ENm*P|BPU5{M< zGfEtGxw{~EUajC3C@Qpo$*05&u##_IZ!u<_g*bV>L#$GVbGcM_~zzU4(giUf^sv(D5i2N zSWop1#5MA5U?=*}(r$ETlDg5pVdmZmb{w7bwm1=d7g#+qxEpK+Bg%~L>C7Ef^b_K} za5WnYZE>j)GuwyJbmiQKMu1Fz?RI?;fwkQaw{d+U#sgq=W8~#zc(5}wN`pOeEj&nx zY##xetv1(zJZz7Fy&>9M5^`;h))QdIUYpB99=4~zj+{1^%2Up$Fg^n|35~8Bx!5)1 zvtvNEd~u8Z03JqfP0Ge?#9-FZ*E%j_{UYJ#!D`xEb8>CD_xwdj^wb3?kEC7(N5(Ej z`2cQ#^`h1?f@p|)^%hv&PiSwKS~@S@DYbN7 z{1MIi`fGPyn3PXgZ9g%ywxMiQOu{=qIP|d(iv#baPnoPZ>`u7{-YNIcJLMjHr+niY zzDW)D5IphEv&~xznWy22LvbLUau3CW``jN`!#x~N?H-N??}5LE<4ZY-SWFJ9NTE)@!XZ^EtM0d^X|1MHN0fF0a~ zJircaLLOiTw*wwvS2*X4jzD+zqTwL-06XO#U%@S?{n-R%c(xr}f6umq7q=|o`g^n;cKt^t+zxuQtvz>_X$8-=qk;~eZKvGx z?cm;$yoP(y9d_$`(w*`P6K=vcR(NI4Z2~tZ4hHZ5JOWt31MuMbKay~J=mB`xt?vPN zaO-;j9^CpKfVX#F=?ECW6Yy{_fCu2g4d4NIa07glaO-;j9(L<{0G@IWz=IpFJ+Gwp z+X3PhET>R%11_I%hrC-2@7410(7M%E(X@GuX-G@Mj&-XSi@Px~nb!CkKBbj1{TI~m6H7iQyZ6T(>#pdW zx8+IrEN3ennCNcP+QHpR^rLu=;?bf$3(L*vGTJHn#g~QlU^lrt5hpfC%c7~rHhg)o znn#mSZ-tI*H)<<(zyU+GVn?uA8yc{pz3SAm(%8DLJFSS^NpqQdXK>_hdsfvaa$gB- z{`$H1IfHyxYWaBoy6(B(dAcIkX0tMydUT^3SZx(bbfY`Cw%)JM)T7?2V72Kq8NFBy zKA3#@_R_NY*t+G0td5`<{aFJX{jp(#=o4eSCU^%N!hfxn5eL+D&6T6eYl9857R4@i z;i?vU&~?=b@e=FYy=xD6q2ap@SRTIXmA)^RzU#va4PUo{a@xo<_kkN!Nah}JqY}IS z>s{haxO!l0Qk!x0kXY=NFMQnYZC&cyaE&-_^E~s7#J1CiPVCLpFP>V15ELzbxVhQc z%pF(8_GsEYkF`Pfh=o@6Y6#q(SAy~F4ySLSZu1<4BA9o`e(fo^Hv1MY0eH!PiXu!rtyHAbMl!2Oay!{MhV zf%b+Q$T<3HH_o11wMCo};Gs#Jec>#ryy~zYf)g$>+#ei)b=DrX0}`8o^|jG`xN3_= z4+Ptx`?;MSLL3BE8%gmD;*gGRoB4PMq48kKArucD#0GMv9|m4JX|n8axSGXJdY?z5 zX&*(|r<_N>R--qT1*O)2Hro5I(T2=$EOs4 zfc0^hqu~?aChG0c=R_+g>Kwf|5gd>G)4|&lU?ejv5f0&HDvK7g+B$>qlf zkj5)1S5bTbiA}(Xat%0r09^}Lv-lz3>ci%`mRAn1>pJ9mOuAi1i7+>S*P+BK=0>oZ z#ZMaMrb?KbG3j;_CBobS?n#L-w}RCywP9{6!sNGO((N{iVH}M+!SS5A11xu5-Nn`H z#dmWx1@S#xjWd81xP&ieSl2rG>Z9+~T(#R4zN=;TK@|5cm+$>xwfkD;k77^v z5K!qsN-Vxd!L^I;F*NmTCl=omV11&*;(M~J=hK6=muHV4=p2uRr@$tq zqn&VyJq`BJ6m$6*uxmg)p6<_rk7d4Vi$~EPz{b<&;4J2<7WeZx--Epp;d!u5F%mC; z9lT$7?L;y!!qwxY{1Vuaa3`S6#KQMwxN9R4e+8_+dZGCqehs4GRZ0xs>tOXLF??^J z*_gxk9N2{QwRd(z`wvX#SW8}`w{L=@vySRJ@cgvo5%EU^MgR63iM$I}j}nQzhZcz# z_-%^5k%)E^IfSc=+G`~80oX(sfxKAdA43#Bq8Q+Pu4+-?6Yz$m?N40g`hCjvGfE8i zpTT=l;!*S$u$qq|A3J~J>c^*!w!eD+70vLkTn*$3{W~~T=vQEQB=a@cN0JHr11t~Q zzra3cwEdH-JZ%34_bhGSaFq}8^v37he;_V7D}D=>i@)Q#OR?waOp00dU-*{znbhZ$ zFDPG9OvDBaY<=r}Px*oJBPEjfU#S~=6Y%Z|Vf+bf1&y0=m51$Tuz|E~&Q%_^jKi?O zbuB|1>-u&Xg&wP?zM`MdSl6p=WXtu9b-nkp`Y*V&$7J=V>C}ebnQHv^iM4A0?Xa59XcG^2xZmmGUhh-j}`<8?=HBv81*HdmqwCv=y3qOrmYT zYFksH-T<)mPNvu)pa0vUsYktmop>E9uD;yTirbYH(~bBbH1()B7_4SJXQ;uqhZ8W< z7OQIqu*qpN37@n>!SSRW(y3+m#Jbh$K5v;gv95RSkM4HD93giB`vb6@xyFF*3UYSHiA)oaFU4>a{ie^0QQKh=tQdv(gj{J#MkjuVDz#l695w^K2a+y`zzZ8393 zfYZgZFI;UzL3;!^ywtRr&~9ASVuFnZtHqx2*I;A&h0R^k zDEMf;3RfFxK(G-VqmeOS_jTGL@L2E;_(kAGcm($6PRsJf)F+Z}0vlJqs57pt)7LGS zU%+fg$GB_b!A_@`Y7^jUR*b2p7XA~#zBPxi0(ubh2>6mWor(Z>9!eeBngO8->6ES8v&kdxbL++DnHrU=^EarvU z9I%0QD(#Mdy;YA9I1Zf7^Bk^rTxFgw04g0%v5NEjL~zXW6TosqpTt#v@j|ZYJUE*q`R-AF1NP${RogifHMgi@6LHscE_hMN zO{5u|4*qZ9Y8F3jS}vGUw?d!aK{fdc+vwAI@bpdH0#`e)xNm*V2P&miE`XI>m& z7Zg?!CDR?rAY~Dql>lM$kz^td48I2GbUSt_8>5z(Ci* zJw1-buZQcS9&v5}8%tZnxe;tftFz@M1dop+(9Lk2)FaR>V1sFMq%P&ECcc%c&kY-J zz1;>slX%XwJHURNY3jFA)SPLzyHI0T?gV@G9aHu$xLQovd%zJ$+uam31BoNfec<%r zbU)m+=KEkV*uP%sW8%d>LDNC<0N000yoBpU$vt}nelI1Gdlak|$vqDCV=uKmMo}|4 zvB|lfo&d+U5Y|(t>`8>`f@-OoS=Y7Y{3&%E`aF&P6vcx(E4%offu}3zS-9FWl@;^{ zpi)}pIe5B)o`uJ(3O zWzZjiN@>U6g`2Dy*m1+^7ae~Otk1iZP5%2prF4`3L1mNwA+qKVD9$WrlbTPJm=#{* z#(oS=ANQZZ)jmyp{tR|#qt0Kz=`j8ku10BTp28;oZxF?+nD16{VSWLR7vbk%xe0#B zRe$kUT+h%vLJTG{zIjIhLxg`U%)n`UyMk` zPchV^#E8_P$B5WtJE^ZDaw%AQ9z)UwlI|Gm;Y)BzcZ_Y()Q6P2%66qsx?x-fO+Aup z54N78rOmy)BfcycDK9p0I>nGJ2Tq56dARpKMqmZFKI)-$0IU0cj)ptJ)vKjEbMAx| zqta$YHr!@XIG35NSUR}7)Y;*3WYiRpE^Ds(uV;412GToiQa`CQQ^%w8P_4DGuy7EW*-QjjafBm$_)Y${9-S<>w&>>p;OOW6 zV7YxekgNV;e-4@6u7lvq(hvRd%L|9-=)s6Oq#Zp(&g)29^z%@#ebr_on{ZW&J|6~7 zA8UuhPvzce_vtbk?gM3EmRBA(zlMyWXb7hUuujqF7_gcXD*mQ57EWi1ziDar-%_1g zKEfK|#?>ccG=V+Q(N=6Me8!H0n4!jKd_34*#qMJQSU>gfnFwB!63^iyz-m$AIXnr? zB>Pev8Dr_|$mI@`4!$Ao0Q-jUI;4D$PSKIt>3ei4n!1VjzMNkA#8c@=xSGWe9WEN1 z2G{1lOYk<#@cv%`&=7NACfEir7L_J*Rf}HF2CK!hcn;X!726h~`Ylc$dpC=#_NY4- ztQL#tDBrP){v|I0&V$Er`M`EE9)%XYJsRw&#jQC8u4X+O)utAW&IhLn9|t$S39pee zHfF4om5=4BgLnbgemu$JUof2jA4ny2d*INY2tJ;oEfP8jto{j!7$*m-MF$pwV|5HL z$jPM;0ZxId+4HD$D%?OZ*-mSD^f>-3emat!=}WPiZl_VA^JjqVQ&c+>tQIBa=vinH z$NY?|Zw#pRi1{0EIiPtlj}{?V*%3Vl?11VN6`H~6PWQKozrUe87p_lCi{F8bsh8s%?xZ0JKx8Bu2 zC3mjT`ZX;_p2S=4TI6de(c*PrHUAV5Z;|Wa>K31WzC~^T8&;cHICwXK<1KO{SnjCb z%vJvZ++&{>w}3lxXYt7kV>Es%2EW4UU_(0J2DZ!E;>iAXu+xMkRoJ8c9q3MV?NR^E zQqyKK7jjjr4BhIS-DsdvJoD~>tKD50yTw4Idnqw?_f^L3ex&;-(fk8oHQx&{b`QeU zE#5)L?jf*YwZ+&i0ms-q43?YjBV6?tKgu=PX&jL~hTvAi3Oec#$vh6$?s&vlJONi% zGvHldwU|avfzzRQ8m{(KWhkBjDve}^5kv88WhnlD{46C}e-5l>OEDDB!__Tjlsz$d|KF%)lt z)1i0^uJ&eSDBcDtjiSU*yi*y9KO((DiPql*tNCY|7>f7c>Xw)l?}H7iEr#Mla16x< zV7b|T#8rRs$6P;My8q0xKOs02R?tz0Naho;_H-ydg{#L?h94XDxk^%+++1N-d$4>(@p4)+gmeWF)Cf*l$EalAI)iSB0NMf_hheaey- z6%G8qvZ8Nv8~L81vq{*Xb~lR`Xe+PUeuCRb^!#Ud7j8$KH~#`xi+5xl|9HfY@5o== zhxz}dQ8cJHdfEn@uBm#sn#B*^#n#6MLt8ZM>9?77aQ~!hame*s22EdWw)2ziFAIrf z<3Aaa+cW>QkQK!KOQB@hWGle^I-|dS+T#{<0AniVl}8h9GWCxU>Iim(yydy~u#=T3 z8e&M*9PStyuQ4(!f@2PN>pH_dy@`F?N^rF$XwhgFxVI|iSywpPxK<}RD!wZQ(?D&njSPyed44qP8~;*2Q*tqU=j#t75{JRk|w6Q2H6X+5|;>XFd; zU}I@>9Q?Oq>$g05X5HG$Y|mJoT-WmFGx=TDi7g$^s@pX0g|!bQTHF+@Tky@``uGLY z?)C#a;=?HVYPXfXT(w2L{$PLkCwD4s0Z;#`w-2{daadNXzHlP_P3t zgn7_|4(yzZ2Mc>JevWu!9$Ib^#kF{eHWv1EnDX?FP0YhH9?6gKa=t z1m6Sf-HhOS!VRAOC}=OZdc+NKNCX@9hr0&QDPAK7fwf18C&j^N z*6~SUQYNBrbmoxKZfEqhGb6aFn_Th#OgI#x7`-_R9E-)oM#IzZb-#w&s4w!v!J{bp zM6wNFeWFCNW6&a5+oYX5(>byoTRNDn&XKKp-0LQAH%dAo$HCS0Z{#Wu{|R9I(}_0` zuFl_{D*u4;2#A^a7T4%*a5RDe$HTRYCvlCJuaAwX>ZRWlusrVhbg-jly=h>1*k*u- zYRfSm2~miDM>G>W5TgODsNEowxoV5sG)KK`U^ZADwxht_QtQp-Di7PyVBaFz@_7)2 z$n03KJ=S;(S9#cu13LoR=5v*Y?Rc<5Uj*eU58DY~lh?L@tGu-3*-4OMC@`J~mJi_0 zIJ^tN7jU(A_QGUM%Eohw!K`E8SzPruuys!b#|WGPmWSIHV delta 22628 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 delta 23868 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 J#9K0H{tt3|O3VNN delta 22578 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 diff --git a/packages/ludic.render3d/shaders/terrain.frag b/packages/ludic.render3d/shaders/terrain.frag index 4e7e8869..a0b923cc 100644 --- a/packages/ludic.render3d/shaders/terrain.frag +++ b/packages/ludic.render3d/shaders/terrain.frag @@ -268,18 +268,37 @@ vec3 groundShade(vec3 p, vec3 N, float slope, float dist, float viewDepth, bool float mxc = max(ocl.r, max(ocl.g, ocl.b)), mnc = min(ocl.r, min(ocl.g, ocl.b)); float greenEx = ocl.g - max(ocl.r, ocl.b); screeC = smoothstep(0.008, -0.002, greenEx) * smoothstep(0.06, 0.12, mxc) * (1.0 - smoothstep(0.55, 0.75, mxc)) * smoothstep(waterLine(p.xz) + 0.2, waterLine(p.xz) + 1.2, p.y); - snowC = smoothstep(0.08, 0.04, mxc - mnc) * smoothstep(0.55, 0.8, mxc); + // Snow, according to the photograph: bright and unsaturated. Both of which a SUNLIT ROCK + // FACE also is, seen from a satellite through several kilometres of air - so the Bells' + // own faces classified as snow and were painted 90% white, which is the real reason the + // range named for the colour of its rock rendered as a white cone. It needs the elevation + // gate the terrain's own snow has: snow does not lie below the snow line in July, however + // pale the photograph is there. + snowC = smoothstep(0.08, 0.04, mxc - mnc) * smoothstep(0.62, 0.84, mxc) + * smoothstep(u_snow_line - 260.0, u_snow_line - 40.0, p.y); } // snow lingering in the high gullies is drawn further down, but whether it can be // there at all is known now, and it is the third caller of the snow sample - float gullyGate = smoothstep(450.0, 650.0, p.y) * smoothstep(0.75, 0.35, slope); + // Snow lingering in the high gullies, and it has to be gated on THE SNOW LINE rather than on + // two absolute heights. At 450-650 m it started five hundred metres below where snow can lie, + // covered most of the upper mountain at nine tenths opacity, and is the single biggest reason + // the Bells rendered as a white cone: the mean colour of that peak measured 208/255 and + // neutral, which is not rock under any light, it is snow. Gullies hold snow NEAR the line, + // not half a kilometre under it. + float gullyGate = smoothstep(u_snow_line - 340.0, u_snow_line - 120.0, p.y) * smoothstep(0.75, 0.35, slope); // ---- samples --------------------------------------------------------------------- // World-space derivatives, taken once and in unbranched control flow: every sample // below is in a branch and takes its gradients from these. vec3 dpx = dFdx(p), dpy = dFdy(p); vec3 gA = vec3(0.3, 0.4, 0.2), gN = vec3(0.0, 0.0, 1.0), gR = vec3(1.0, 0.8, 0.0); - vec3 rA = vec3(0.3), rN = vec3(0.0, 1.0, 0.0), rR = vec3(1.0, 0.8, 0.0); + // The rock's fallback is the MAROON MEAN, not a neutral grey. The far tier (TFAST_3) skips + // the rock sample altogether and leaves this constant standing in for it, so a neutral grey + // here is what the mountain three kilometres away is actually painted - and it is the + // mountain the range is named for. The file's own rule a hundred lines up says the cheap + // tier must keep the near tier's MEAN COLOUR or the boundary shows as a ring; this is that + // rule applied to the one material where the mean is not grey. + vec3 rA = vec3(0.26, 0.13, 0.10), rN = vec3(0.0, 1.0, 0.0), rR = vec3(1.0, 0.8, 0.0); vec3 sA = vec3(0.86, 0.88, 0.92), sN = vec3(0.0, 0.0, 1.0), sR = vec3(1.0, 0.55, 0.0); vec3 pA, pN, pR; vec2 uvg = p.xz * 0.28; @@ -337,7 +356,11 @@ vec3 groundShade(vec3 p, vec3 N, float slope, float dist, float viewDepth, bool rA *= mix(1.0, 0.75 + 0.5 * smoothstep(0.35, 0.65, strata), 0.5 * smoothstep(0.3, 0.6, slope)); rN = normalize(rN + vec3(rN2.x, 0.0, rN2.y) * 0.6 * smoothstep(80.0, 400.0, dist)); // the Bells are maroon mudstone: warm red-brown rock with grey scree below - rA *= mix(vec3(0.14, 0.08, 0.06), vec3(0.24, 0.15, 0.11), fbmC(cheap, p.xz * 0.003, 2) * 0.5 + 0.5); + // The Bells are maroon mudstone: warm red-brown rock, with grey weathered scree below. + // These were tuned while 55% of a grey photograph was mixed over them, so they had to + // be dark and timid to survive it; with the rock now mostly its own colour they can be + // the colour the range is named for. + rA *= mix(vec3(0.38, 0.17, 0.13), vec3(0.58, 0.31, 0.23), fbmC(cheap, p.xz * 0.003, 2) * 0.5 + 0.5); } if (needSnow > 0.002) { sA = textureGrad(u_snow_d, p.xz * 0.25, dpx.xz * 0.25, dpy.xz * 0.25).rgb * 0.8; @@ -370,7 +393,28 @@ vec3 groundShade(vec3 p, vec3 N, float slope, float dist, float viewDepth, bool // flown, so grass that was plain up close grew dark patches as you backed away, and // those patches slid and changed shape as you walked. A constant keeps the // photograph's large-scale colour without tying any of it to the camera. - float orthoW = 0.55; + // How much of the photograph shows through, and it is NOT one number any more. + // + // The Maroon Bells are named for the colour of their mudstone and rendered grey, and + // this line was why: the maroon tint two hundred lines up is real, and then 55% of a + // hazy, sun-washed aerial photograph was mixed over the top of it everywhere. A survey + // image is a good record of WHERE the forest and the scree are and a poor record of + // what a steep rock face is coloured - it is shot through kilometres of atmosphere at + // an angle no player ever stands at. + // + // So the photograph keeps the meadow and the forest, where it carries real variation + // nothing else knows about, and gives the rock back to the rock. Deliberately NOT a + // distance fade: one used to live here and was removed because the photograph has the + // day's own shadows baked into it, so grass that was plain up close grew dark patches + // as you backed away and those patches slid as you walked. This keys off the material, + // which does not move when the camera does. + float orthoW = 0.55 * (1.0 - 0.62 * rockW); + // ...and it falls away with HEIGHT as well. A survey image is least trustworthy exactly + // where it matters most here: a high face is shot through the most air, at the most + // oblique angle, and comes back pale and grey whatever colour the rock is. Down in the + // valley the same image is the best record there is of where the meadow, the duff and the + // gravel actually are, so it keeps the valley and gives up the mountain. + orthoW *= 1.0 - 0.72 * smoothstep(280.0, 720.0, p.y); // grain at three scales so the far slopes keep structure the photograph's pixels cannot carry #ifdef TFAST_20 float grain = 0.82;