56 lines
1.4 KiB
NASM
56 lines
1.4 KiB
NASM
-- temp[0] -- texture
|
|
-- temp[1] -- normal
|
|
-- temp[2] -- (world space) fragment position
|
|
-- temp[3] -- (world space) light position
|
|
|
|
-- PIXSIZE 4
|
|
|
|
TEX TEX_SEM_WAIT TEX_SEM_ACQUIRE
|
|
temp[0].rgba = LD tex[0].rgba temp[0].rgaa ;
|
|
|
|
-- normalize:
|
|
-- v * 1.0f / sqrt(dot(v, v))
|
|
|
|
-- norm = normalize(Normal)
|
|
src0.rgb = temp[1] :
|
|
DP3 src0.rgb src0.rgb ,
|
|
temp[1].a = DP ;
|
|
src0.a = temp[1] :
|
|
temp[1].a = RSQ src0.a ;
|
|
src0.rgb = temp[1] ,
|
|
src0.a = temp[1] :
|
|
temp[1].rgb = MAD src0.rgb src0.aaa src0.000 ;
|
|
|
|
-- temp[2] -- (world space) fragment position
|
|
-- temp[3] -- (world space) light position
|
|
-- lightDir = normalize(lightPos - fragPos)
|
|
-- srcp.rgb = (src1.rgb - src0.rgb)
|
|
src1.rgb = temp[3] ,
|
|
src0.rgb = temp[2] ,
|
|
srcp.rgb = neg :
|
|
DP3 srcp.rgb srcp.rgb ,
|
|
temp[3].a = DP ;
|
|
src0.a = temp[3] :
|
|
temp[3].a = RSQ src0.a ;
|
|
src0.rgb = temp[3] ,
|
|
src0.a = temp[3] :
|
|
temp[3].rgb = MAD src0.rgb src0.aaa src0.000 ;
|
|
|
|
-- diff = dot(norm, lightDir)
|
|
-- diff = dot(temp[1].rgb, temp[3].rgb)
|
|
src0.rgb = temp[1] ,
|
|
src1.rgb = temp[3] :
|
|
temp[4].r = DP3 src0.rgb src1.rgb ;
|
|
|
|
src0.rgb = temp[4] :
|
|
temp[4].r = MAX src0.r00 src0.000 ;
|
|
|
|
OUT TEX_SEM_WAIT
|
|
src0.a = temp[0], src0.rgb = temp[0] ,
|
|
src1.rgb = temp[4] ,
|
|
src2.rgb = temp[1] :
|
|
out[0].a = MAD src0.a src1.1 src1.0 ,
|
|
out[0].rgb = MAD src0.rgb src1.rrr src1.000 ;
|
|
--out[0].rgb = MAD src2.rgb src2.100 src1.000 ;
|
|
--out[0].rgb = MAD src2.r00 src1.rrr src1.000 ;
|