Render.ru

Alex-у про вороного

#1
Помниш приколы с вороным?
Я тут поковырял его наднях немного. Вот что получилось:
http://www.geocities.com/andrewvk107/Mosaic.zip
Прямо как в фото@!#$.
А по поводу сетевого...чоб тебе просто не разбросать
кадры по разным тачкам и забить на сетевой раз он такая зволочь.
_________________________________________________
void
voronoi_extra ( uniform float numS, numT;
float jitter;
output float ss, tt;
output float border)
{
float SS = ss * numS;
float TT = tt * numT;
float sthiscell = floor(SS)+0.5;
float tthiscell = floor(TT)+0.5;
float f1 = 1000;
float f2 = 1000;
uniform float i, j;
for (i = -1; i <= 1; i += 1) {
float stestcell = sthiscell + i;
for (j = -1; j <= 1; j += 1) {
float ttestcell = tthiscell + j;
float spos = stestcell +
jitter * (cellnoise(stestcell, ttestcell) - 0.5);
float tpos = ttestcell +
jitter * (cellnoise(stestcell+23, ttestcell-87) - 0.5);
float soffset = spos - SS;
float toffset = tpos - TT;
float dist = soffset*soffset + toffset*toffset;
if (dist < f1) {
f2 = f1;
f1 = dist;
ss = spos/numS;
tt = tpos/numT;
} else if (dist < f2)
f2 = dist;
}
}
border = sqrt(f2) - sqrt(f1);
}

surface
AK_StainedTexture ( float Ka = 0.2;
float Kd = 0.8;
float Ks = 0.5;
float roughness = 0.2;
string Texture = "";
float Angle = 0;
color GapColor = 0.5;
color Specular = 1.0;
float Opacity = 1.0;
uniform float Rows = 10;
uniform float Cols = 10;
float Jitter = 0.75;
float GapWidth = 0.2;
float GapBump = 0.0 )
{
Ci = Cs;
Oi = Oi * Opacity;

if (Texture != "") {
normal Nf;
vector V;
color GlassColor;
color GlassOpac;
float Border = 0;
float ss = s, tt = t;
voronoi_extra (Rows, Cols, Jitter, ss, tt, Border);
if (Angle != 0){
point Temp;
setxcomp (Temp,ss);
setycomp (Temp,tt);
Temp = rotate(Temp, radians(Angle), point(0,0,0), point(0,0,1));
ss = xcomp(Temp);
tt = ycomp(Temp);}
float Gap = smoothstep (0,GapWidth,Border);
GlassColor = color texture(Texture, ss, tt);
GlassColor = color mix(GapColor, GlassColor, Gap);
GlassOpac = color mix(color 1, GlassColor*Opacity, Gap);

N = calculatenormal(P + (Gap * GapBump * normalize(N)));
Nf = faceforward( normalize(N), I );
V = -normalize(I);

Oi = GlassOpac;
Ci = Oi * ( GlassColor * (Ka*ambient() + Kd*diffuse(Nf)) +
Specular * Ks * specular(Nf,V,roughness) );
}
}
 
#2
Nice images Andrew

I have also make some research on "voronoi" kind of texture,
are you thinking on make this public with "shaderman" bricks.

I'm sorry I only speak english.

shaderman beta tester.
Fredrik Gustafsson
 
#4
Давай. Только я тут случайно залил немного неправильный.
Он кое где цеплял цвет из противоположных ребер.
Да и с прозрачностью пробредил. Вот этот вроде поправильней будет.

void
voronoi_extra ( uniform float numS, numT;
float jitter;
output float ss, tt;
output float border)
{
float SS = ss * numS;
float TT = tt * numT;
float sthiscell = floor(SS)+0.5;
float tthiscell = floor(TT)+0.5;
float f1 = 1000;
float f2 = 1000;
uniform float i, j;
for (i = -1; i <= 1; i += 1) {
float stestcell = sthiscell + i;
for (j = -1; j <= 1; j += 1) {
float ttestcell = tthiscell + j;
float spos = stestcell +
jitter * (cellnoise(stestcell, ttestcell) - 0.5);
float tpos = ttestcell +
jitter * (cellnoise(stestcell+23, ttestcell-87) - 0.5);
float soffset = spos - SS;
float toffset = tpos - TT;
float dist = soffset*soffset + toffset*toffset;
if (dist < f1) {
f2 = f1;
f1 = dist;
ss = spos/numS;
tt = tpos/numT;
} else if (dist < f2)
f2 = dist;
}
}
border = sqrt(f2) - sqrt(f1);
}

surface
AK_StainedTexture ( float Ka = 0.2;
float Kd = 0.8;
float Ks = 0.5;
float roughness = 0.2;
string Texture = "";
float Angle = 0;
float FlipS = 0;
float FlipT = 0;
color GapColor = 0.5;
color Specular = 1.0;
float Opacity = 1.0;
uniform float Rows = 10;
uniform float Cols = 10;
float Jitter = 0.75;
float GapWidth = 0.2;
float GapBump = 0.0 )
{
Ci = Cs;
Oi = Os * Opacity;

if (Texture != "") {
normal Nf;
vector V;
color GlassColor;
color GlassOpac;
float Border = 0;
float ss = s, tt = t;
voronoi_extra (Rows, Cols, Jitter, ss, tt, Border);
ss = clamp(abs(ss),0,1);
tt = clamp(abs(tt),0,1);
if (Angle != 0){
point Temp;
setxcomp (Temp,ss);
setycomp (Temp,tt);
Temp = rotate(Temp, radians(Angle), point(0,0,0), point(0,0,1));
ss = xcomp(Temp);
tt = ycomp(Temp);}
if (FlipS != 0)
ss = 1 - ss;
if (FlipT != 0)
tt = 1 - tt;
float Gap = smoothstep (0,GapWidth,Border);
GlassColor = color texture(Texture, ss, tt);
GlassColor = color mix(GapColor, GlassColor, Gap);
GlassOpac = color mix(color 1, color Opacity, Gap);

N = calculatenormal(P + (Gap * GapBump * normalize(N)));
Nf = faceforward( normalize(N), I );
V = -normalize(I);

Oi = GlassOpac;
Ci = Oi * ( GlassColor * (Ka*ambient() + Kd*diffuse(Nf)) +
Specular * Ks * specular(Nf,V,roughness) );
}
}
 
#5
ЗдОрово! Причем вполне применимо на практике! А насчет сетевого рендеринга: обидно, черт возьми, бросать один из самых главных плюсов prman'а... Особенно, когда видишь загрузку рендеринг-хостов: у меня prman.exe отжирает максимум 32 мегабайта РАМ на довольно тяжелой сцене. Просто супер-оптимизированный для сетевого рендеринга софт и не рендерит в сети... Лажа...
 
Сверху