| 165 | |
| 166 | |
| 167 | void ShaderBagCG::LoadFixedShaders() |
| 168 | { |
| 169 | // s_debug = new ProgramCG( "void main(float4 TexCoord0:TEXCOORD0, out float4 FragColor:COLOR0," |
| 170 | // "uniform samplerRECT tex){ gl_FragColor.rg = gl_TexCoord[0].st;}"); |
| 171 | |
| 172 | s_gray = new ProgramCG( |
| 173 | "void main(float4 TexCoord0 : TEXCOORD0, out float4 FragColor : COLOR0, uniform samplerRECT tex){\n" |
| 174 | "float intensity = dot(float3(0.299, 0.587, 0.114), texRECT(tex,TexCoord0.xy ).rgb);\n" |
| 175 | "FragColor= float4(intensity, intensity, intensity, 1.0);}" ); |
| 176 | |
| 177 | |
| 178 | s_sampling = new ProgramCG( |
| 179 | "void main(float4 TexCoord0 : TEXCOORD0, out float4 FragColor : COLOR0, uniform samplerRECT tex){\n" |
| 180 | "float4 cc = texRECT(tex, TexCoord0.xy); FragColor = float4(cc.rg, 0.0, 0.0); }" ); |
| 181 | |
| 182 | |
| 183 | s_zero_pass = new ProgramCG("void main(out float4 FragColor : COLOR0){FragColor = 0;}"); |
| 184 | |
| 185 | |
| 186 | ProgramCG * program; |
| 187 | s_margin_copy = program = new ProgramCG( |
| 188 | "void main(float4 texCoord0: TEXCOORD0, out float4 FragColor: COLOR0, \n" |
| 189 | "uniform samplerRECT tex, uniform float2 truncate){\n" |
| 190 | "FragColor = texRECT(tex, min(texCoord0.xy, truncate)); }"); |
| 191 | |
| 192 | _param_margin_copy_truncate = cgGetNamedParameter(*program, "truncate"); |
| 193 | |
| 194 | |
| 195 | s_grad_pass = new ProgramCG( |
| 196 | "void main (\n" |
| 197 | "float4 TexCC : TEXCOORD0, float4 TexLC : TEXCOORD1,\n" |
| 198 | "float4 TexRC : TEXCOORD2, float4 TexCD : TEXCOORD3, float4 TexCU : TEXCOORD4,\n" |
| 199 | "out float4 FragData0 : COLOR0, uniform samplerRECT tex)\n" |
| 200 | "{\n" |
| 201 | " float4 v1, v2, gg;\n" |
| 202 | " float4 cc = texRECT(tex, TexCC.xy);\n" |
| 203 | " gg.x = texRECT(tex, TexLC.xy).r;\n" |
| 204 | " gg.y = texRECT(tex, TexRC.xy).r;\n" |
| 205 | " gg.z = texRECT(tex, TexCD.xy).r;\n" |
| 206 | " gg.w = texRECT(tex, TexCU.xy).r;\n" |
| 207 | " float2 dxdy = (gg.yw - gg.xz); \n" |
| 208 | " float grad = 0.5*length(dxdy);\n" |
| 209 | " float theta = grad==0? 0: atan2(dxdy.y, dxdy.x);\n" |
| 210 | " FragData0 = float4(cc.rg, grad, theta);\n" |
| 211 | "}\n\0"); |
| 212 | |
| 213 | |
| 214 | if(GlobalUtil::_SupportFP40) |
| 215 | { |
| 216 | //use the packing mode for cpu list reshape and two orientations |
| 217 | if(GlobalUtil::_MaxOrientation != 2) GlobalUtil::_OrientationPack2 = 0; |
| 218 | |
| 219 | LoadOrientationShader(); |
| 220 | |
| 221 | |
| 222 | if(GlobalUtil::_DescriptorPPT) LoadDescriptorShader(); |
| 223 | |
| 224 | }else |