sl 1.0 li s0, -1 mul r0, V, s0 li s0, -2 dp3 s1, N, r0 mul s0, s0, s1 mul r1, N, s0 add r0, r0, r1 trace r1, Pw, r0 mul r1, r1, Kr movc x s0, r1 movc x s1, C0 mul s0, s0, s1 lc x r1, s0 movc y s0, r1 movc y s1, C0 mul s0, s0, s1 lc y r1, s0 movc z s0, r1 movc z s1, C0 mul s0, s0, s1 lc z r1, s0 mov v0, r1 mov s0, I #c1 = Dot(wo, N) dp3 s1, V, N # (1 - c1) li s2, 1 sub s2, s2, s1 #c2 = 1-(eta*eta*(1-c1)) mul s3, s0, s0 mul s3, s3, s2 li s2, 1 sub s2, s2, s3 li s3, 0 blt s2, s3, 24 #c2 = c2^1/2 li s3, 0.5 pow s2, s2, s3 # (eta*c1 - c2) * N mul s1, s1, s0 sub s1, s1, s2 mul r0, N, s1 #-eta * wo li s1, -1 mul s0, s0, s1 mul r2, V, s0 #DirT add r0, r0, r2 trace r1, Pw, r0 #scale by transmissiveness mul r1, r1, Kt #modulate by base color movc x s0, r1 movc x s1, C0 mul s0, s0, s1 lc x r1, s0 movc y s0, r1 movc y s1, C0 mul s0, s0, s1 lc y r1, s0 movc z s0, r1 movc z s1, C0 mul s0, s0, s1 lc z r1, s0 add v0, v0, r1 #now perform specular and diffuse reflection dp3 s0, N, L mul s0, s0, Kd mul r0, C0, s0 add v0, v0, r0 add r0, L, V norm r0, r0 dp3 s0, N, r0 pow s0, s0, S mul s0, s0, Ks mul r0, C1, s0 #component-wise multiply by dE #yuck! add v0, v0, r0 movc r s0, v0 movc r s1, dE mul s0, s0, s1 lc r v0, s0 movc g s0, v0 movc g s1, dE mul s0, s0, s1 lc g v0, s0 movc b s0, v0 movc b s1, dE mul s0, s0, s1 lc b v0, s0