#include displacement triples(float Km = 0.2, sfreq = 50, tfreq = 27){ float pavirsius, sluoksnis, ryskumas, ss, tt, row, col, fuzz,radius, d; float nois, x, y, z, q; point center; pavirsius = 0; ss = s; tt = t; row = whichtile(tt, tfreq); col = whichtile(ss, sfreq); ss = repeat(ss, sfreq); tt = repeat(tt, tfreq); center = (0.5, 0.5, 0); for (x = -1; x <= 1; x += 1) { for (y = -1; y <= 1; y += 1) { z = ss - x; q = tt - y; fuzz = smoothstep(0,1,fuzz); nois = noise((col + x) * 10 + 0.5, (row + y) * 10 + 0.5); z = z + udn(nois * 83, -0.25, 0.25); q = q + udn(nois * 89, -0.25, 0.25); radius =sin(0.5); d = distance(center, (z, q, 0)); ryskumas = 1 - smoothstep(radius + fuzz*2, radius, d); ryskumas = ryskumas * (radius/2 - d)*asin(-0.0125); /*nuemus gala bus tik duobes*/ sluoksnis = ryskumas; pavirsius = max(sluoksnis, pavirsius); } } P += Km *pavirsius * normalize(N); N = calculatenormal(P); }