98 lines
2.1 KiB
NASM
98 lines
2.1 KiB
NASM
--
|
|
-- float length_(vec2 v)
|
|
--
|
|
|
|
-- float n = dot(v, v);
|
|
src0.rgb = temp[0] : -- v
|
|
DP3 src0.rg0 src0.rg0 ,
|
|
temp[0].a = DP ;
|
|
|
|
-- n = 1.0 / sqrt(n);
|
|
src0.a = temp[0] : -- n
|
|
temp[0].a = RSQ |src0.a| ;
|
|
|
|
-- n = 1.0 / n;
|
|
src0.a = temp[0] : -- n
|
|
temp[0].a = RCP src0.a ;
|
|
|
|
--
|
|
-- float pow_(float x, float n)
|
|
--
|
|
|
|
-- x = log2(x);
|
|
src0.a = temp[0] : -- x
|
|
temp[0].a = LN2 src0.a ;
|
|
|
|
-- x = x * n;
|
|
src0.a = temp[0] , -- x
|
|
src1.a = temp[1] : -- n
|
|
temp[0].a = MAD src0.a src1.a src0.0 ;
|
|
|
|
-- x = exp2(x);
|
|
src0.a = temp[0] : -- x
|
|
temp[0].a = EX2 src0.a ;
|
|
|
|
--
|
|
-- float sin_(float x)
|
|
--
|
|
-- const[0] = { 1.0 / (pi * 2.0), 0, 0, 0 }
|
|
--
|
|
|
|
-- x = x * 0.159154936671257019043 + 0.5;
|
|
src0.a = temp[0] , -- x
|
|
src1.rgb = const[0] , -- I_PI_2 (r)
|
|
src2.a = float(48) : -- 0.5
|
|
temp[0].a = MAD src0.a src1.r src2.a ;
|
|
|
|
-- x = fract(x);
|
|
NOP
|
|
src0.a = temp[0] : -- x
|
|
temp[0].a = FRC src0.a ;
|
|
|
|
-- x = sin((x - 0.5) * PI_2);
|
|
src0.a = float(48) , -- 0.5
|
|
src1.a = temp[0] , -- x
|
|
srcp.a = neg : -- (src1.a - src0.a)
|
|
temp[0].a = SIN srcp.a ;
|
|
-- the R500 fragment shader SIN instruction multiplies
|
|
-- the operand by 2 * pi
|
|
|
|
--
|
|
-- vec3 palette(float d)
|
|
--
|
|
-- the call to cos_ is inlined and algebraically simplified
|
|
--
|
|
-- const[1] = {0.25, 0.40625, 0.5625, 0}
|
|
--
|
|
-- v = d + (vec3(0.25, 0.40625, 0.5625) + 0.5)
|
|
src0.a = temp[0] , -- d
|
|
src0.rgb = const[1] , -- vec3(0.25, 0.40625, 0.5625)
|
|
src1.rgb = float(48) , -- 0.5
|
|
srcp.rgb = add : -- (vec3(0.25, 0.40625, 0.5625) + 0.5)
|
|
temp[0].rgb = MAD src0.111 src0.aaa srcp.rgb ;
|
|
|
|
-- v = frac(v)
|
|
src0.rgb = temp[0] : -- v
|
|
temp[0].rgb = FRC src0.rgb ;
|
|
|
|
-- v = v - 0.5
|
|
src0.rgb = temp[0] , -- v
|
|
src1.rgb = float(48) : -- 0.5
|
|
temp[0].rgb = MAD src0.111 src0.rgb -src1.rgb ;
|
|
|
|
-- v = cos(v)
|
|
src0.rgb = temp[0] : -- v
|
|
COS src0.r ,
|
|
temp[0].r = SOP ;
|
|
src0.rgb = temp[0] : -- v
|
|
COS src0.g ,
|
|
temp[0].g = SOP ;
|
|
src0.rgb = temp[0] : -- v
|
|
COS src0.b ,
|
|
temp[0].b = SOP ;
|
|
|
|
-- col = vec3(0.5, 0.5, 0.5) * v + vec3(0.5, 0.5, 0.5)
|
|
src0.rgb = temp[0] , -- v
|
|
src1.rgb = float(48) : -- 0.5
|
|
temp[0].rgb = MAD src1.rgb src0.rgb src1.rgb;
|