Code generator for the Renderman shading language compiler I'm writing for a masters thesis works. The world is one (small) step closer to raytracing graphic cards ;-). So now it can go all the way through, from source code to abstract syntax tree to assembly to pretty picture. So it can compile this thing:
color silly(point P; point Eye; color near_color; color far_color)
{
vector ray = P-Eye;
float ray_dist = sqrt(ray.ray);
if(ray_dist < 0)
ray_dist = 0;
if(ray_dist > 1)
ray_dist = 1;
color c = near_color + (far_color-near_color) * ray_dist;
return c;
}
To this assembly: add R1.xyz, R0.xyz, -R1.xyz
dp3 R2.w, R1.xyz, R1.xyz
mov_rsq R15.w, R2.w
mov_rcp R15.w, S.w
add R15, 0.0, -S.w + jmp 4 xyzw (>0)
mov R3.w, S.w
8:
add R15, R3.w, -1.0 + jmp 7 xyzw (>0)
9:
add R3.xyz, R3.xyz, -R2.xyz
mul R3.xyz, R3.xyz, R3.w
add R0.xyz, R2.xyz, R3.xyz
return
7:
mov R3.w, 1.0
jmp 9
4:
mov R3.w, 0.0
jmp 8
For now it only supports functions which pretend to be shaders, not "real" surface shaders.
And more about our cool hardware here.
No comments:
Post a Comment