// (c) 2008 Steven Gratton // Guided by examples from the AMD Stream SDK std::string choltopleft= "il_ps_2_0\n" "dcl_input_position_interp(linear_noperspective) vWinCoord0.xy\n" "dcl_output_generic o0\n" "dcl_output_generic o1\n" "dcl_output_generic o2\n" "dcl_output_generic o3\n" "dcl_resource_id(0)_type(2d,unnorm)_fmtx(float)_fmty(float)_fmtz(float)_fmtw(float)\n" "dcl_resource_id(1)_type(2d,unnorm)_fmtx(float)_fmty(float)_fmtz(float)_fmtw(float)\n" "dcl_resource_id(2)_type(2d,unnorm)_fmtx(float)_fmty(float)_fmtz(float)_fmtw(float)\n" "dcl_resource_id(3)_type(2d,unnorm)_fmtx(float)_fmty(float)_fmtz(float)_fmtw(float)\n" "sample_resource(0)_sampler(0) r0, vWinCoord0.xyxx\n" "sample_resource(1)_sampler(0) r1, vWinCoord0.xyxx\n" "sample_resource(2)_sampler(0) r2, vWinCoord0.xyxx\n" "sample_resource(3)_sampler(0) r3, vWinCoord0.xyxx\n" "sqrt r0.x,r0.xxxx\n" "div r0._yzw,r0,r0.xxxx\n" "mad r1._yzw,r0.yyyy,r0_neg(xyzw),r1\n" "mad r2.__zw,r0.zzzz,r0_neg(xyzw),r2\n" "mad r3.___w,r0.wwww,r0_neg(xyzw),r3\n" "sqrt r1.y,r1.yyyy\n" "div r1.__zw,r1,r1.yyyy\n" "mad r2.__zw,r1.zzzz,r1_neg(xyzw),r2\n" "mad r3.___w,r1.wwww,r1_neg(xyzw),r3\n" "sqrt r2.z,r2.zzzz\n" "div r2.___w,r2,r2.zzzz\n" "mad r3.___w,r2.wwww,r2_neg(xyzw),r3\n" "sqrt r3.w,r3.wwww\n" //"flr o0,vWinCoord0.xy00\n" //"flr o1,vWinCoord0.xy01\n" //"flr o2,vWinCoord0.xy10\n" //"flr o3,vWinCoord0.xy11\n" "mov o0,r0\n" "mov o1,r1\n" "mov o2,r2\n" "mov o3,r3\n" "ret_dyn\n" "end\n" ; std::string cholstrip= "il_ps_2_0\n" "dcl_input_position_interp(linear_noperspective) vWinCoord0.xy\n" "dcl_output_generic o0\n" "dcl_output_generic o1\n" "dcl_output_generic o2\n" "dcl_output_generic o3\n" "dcl_resource_id(0)_type(2d,unnorm)_fmtx(float)_fmty(float)_fmtz(float)_fmtw(float)\n" "dcl_resource_id(1)_type(2d,unnorm)_fmtx(float)_fmty(float)_fmtz(float)_fmtw(float)\n" "dcl_resource_id(2)_type(2d,unnorm)_fmtx(float)_fmty(float)_fmtz(float)_fmtw(float)\n" "dcl_resource_id(3)_type(2d,unnorm)_fmtx(float)_fmty(float)_fmtz(float)_fmtw(float)\n" "sample_resource(0)_sampler(0) r0, vWinCoord0.yyxx\n" "sample_resource(1)_sampler(0) r1, vWinCoord0.yyxx\n" "sample_resource(2)_sampler(0) r2, vWinCoord0.yyxx\n" "sample_resource(3)_sampler(0) r3, vWinCoord0.yyxx\n" "sample_resource(0)_sampler(0) r10, vWinCoord0.xyxx\n" "sample_resource(1)_sampler(0) r11, vWinCoord0.xyxx\n" "sample_resource(2)_sampler(0) r12, vWinCoord0.xyxx\n" "sample_resource(3)_sampler(0) r13, vWinCoord0.xyxx\n" "div r20,r10,r0.xxxx\n" "mad r21,r20_neg(xyzw),r0.yyyy,r11\n" "div r21,r21,r1.yyyy\n" "mad r22,r20_neg(xyzw),r0.zzzz,r12\n" "mad r22,r21_neg(xyzw),r1.zzzz,r22\n" "div r22,r22,r2.zzzz\n" "mad r23,r20_neg(xyzw),r0.wwww,r13\n" "mad r23,r21_neg(xyzw),r1.wwww,r23\n" "mad r23,r22_neg(xyzw),r2.wwww,r23\n" "div r23,r23,r3.wwww\n" "mov o0,r20\n" "mov o1,r21\n" "mov o2,r22\n" "mov o3,r23\n" "ret_dyn\n" "end\n" ; std::string cholcopy= "il_ps_2_0\n" "dcl_input_position_interp(linear_noperspective) vWinCoord0.xy\n" "dcl_cb cb0[1].x\n" "dcl_output_generic o0\n" "dcl_output_generic o1\n" "dcl_output_generic o2\n" "dcl_output_generic o3\n" "dcl_resource_id(0)_type(2d,unnorm)_fmtx(float)_fmty(float)_fmtz(float)_fmtw(float)\n" "dcl_resource_id(1)_type(2d,unnorm)_fmtx(float)_fmty(float)_fmtz(float)_fmtw(float)\n" "dcl_resource_id(2)_type(2d,unnorm)_fmtx(float)_fmty(float)_fmtz(float)_fmtw(float)\n" "dcl_resource_id(3)_type(2d,unnorm)_fmtx(float)_fmty(float)_fmtz(float)_fmtw(float)\n" "add r10,vWinCoord0.xyxx,cb0[0].0x00\n" "sample_resource(0)_sampler(0) o0, r10.xyxx\n" "sample_resource(1)_sampler(0) o1, r10.xyxx\n" "sample_resource(2)_sampler(0) o2, r10.xyxx\n" "sample_resource(3)_sampler(0) o3, r10.xyxx\n" "ret_dyn\n" "end\n" ; std::string cholupdate= "il_ps_2_0\n" "dcl_input_position_interp(linear_noperspective) vWinCoord0.xy\n" "dcl_output_generic o0\n" "dcl_output_generic o1\n" "dcl_output_generic o2\n" "dcl_output_generic o3\n" "dcl_resource_id(0)_type(2d,unnorm)_fmtx(float)_fmty(float)_fmtz(float)_fmtw(float)\n" "dcl_resource_id(1)_type(2d,unnorm)_fmtx(float)_fmty(float)_fmtz(float)_fmtw(float)\n" "dcl_resource_id(2)_type(2d,unnorm)_fmtx(float)_fmty(float)_fmtz(float)_fmtw(float)\n" "dcl_resource_id(3)_type(2d,unnorm)_fmtx(float)_fmty(float)_fmtz(float)_fmtw(float)\n" "sample_resource(0)_sampler(0) o0, vWinCoord0.xyxx\n" "sample_resource(1)_sampler(0) o1, vWinCoord0.xyxx\n" "sample_resource(2)_sampler(0) o2, vWinCoord0.xyxx\n" "sample_resource(3)_sampler(0) o3, vWinCoord0.xyxx\n" "ifc_relop(gt) vWinCoord0.y,vWinCoord0.x\n" "else\n" "dcl_resource_id(4)_type(2d,unnorm)_fmtx(float)_fmty(float)_fmtz(float)_fmtw(float)\n" "dcl_resource_id(5)_type(2d,unnorm)_fmtx(float)_fmty(float)_fmtz(float)_fmtw(float)\n" "dcl_resource_id(6)_type(2d,unnorm)_fmtx(float)_fmty(float)_fmtz(float)_fmtw(float)\n" "dcl_resource_id(7)_type(2d,unnorm)_fmtx(float)_fmty(float)_fmtz(float)_fmtw(float)\n" "sample_resource(4)_sampler(0) r10, vWinCoord0.xyxx\n" "sample_resource(5)_sampler(0) r11, vWinCoord0.xyxx\n" "sample_resource(6)_sampler(0) r12, vWinCoord0.xyxx\n" "sample_resource(7)_sampler(0) r13, vWinCoord0.xyxx\n" "sample_resource(4)_sampler(0) r20, vWinCoord0.yxxx\n" "sample_resource(5)_sampler(0) r21, vWinCoord0.yxxx\n" "sample_resource(6)_sampler(0) r22, vWinCoord0.yxxx\n" "sample_resource(7)_sampler(0) r23, vWinCoord0.yxxx\n" "mad r30,r10_neg(xyzw),r20.xxxx,o0\n" "mad r30,r11_neg(xyzw),r21.xxxx,r30\n" "mad r30,r12_neg(xyzw),r22.xxxx,r30\n" "mad r30,r13_neg(xyzw),r23.xxxx,r30\n" "mad r31,r10_neg(xyzw),r20.yyyy,o1\n" "mad r31,r11_neg(xyzw),r21.yyyy,r31\n" "mad r31,r12_neg(xyzw),r22.yyyy,r31\n" "mad r31,r13_neg(xyzw),r23.yyyy,r31\n" "mad r32,r10_neg(xyzw),r20.zzzz,o2\n" "mad r32,r11_neg(xyzw),r21.zzzz,r32\n" "mad r32,r12_neg(xyzw),r22.zzzz,r32\n" "mad r32,r13_neg(xyzw),r23.zzzz,r32\n" "mad r33,r10_neg(xyzw),r20.wwww,o3\n" "mad r33,r11_neg(xyzw),r21.wwww,r33\n" "mad r33,r12_neg(xyzw),r22.wwww,r33\n" "mad r33,r13_neg(xyzw),r23.wwww,r33\n" "ifc_relop(eq) vWinCoord0.y,vWinCoord0.x\n" "mov o0,r30\n" "mov o1._yzw,r31\n" "mov o2.__zw,r32\n" "mov o3.___w,r33\n" "else\n" "mov o0,r30\n" "mov o1,r31\n" "mov o2,r32\n" "mov o3,r33\n" "endif\n" "endif\n" "ret_dyn\n" "end\n" ;