174b28e45c38d742a517ca95e29ab8cbbb1645fd5Jason Sams 274b28e45c38d742a517ca95e29ab8cbbb1645fd5Jason Samstypedef struct FragmentTestRec { 374b28e45c38d742a517ca95e29ab8cbbb1645fd5Jason Sams const char * name; 474b28e45c38d742a517ca95e29ab8cbbb1645fd5Jason Sams uint32_t texCount; 574b28e45c38d742a517ca95e29ab8cbbb1645fd5Jason Sams const char * txt; 674b28e45c38d742a517ca95e29ab8cbbb1645fd5Jason Sams} FragmentTest; 774b28e45c38d742a517ca95e29ab8cbbb1645fd5Jason Sams 874b28e45c38d742a517ca95e29ab8cbbb1645fd5Jason Samsstatic FragmentTest fpFill = { 974b28e45c38d742a517ca95e29ab8cbbb1645fd5Jason Sams "Solid color", 0, 1074b28e45c38d742a517ca95e29ab8cbbb1645fd5Jason Sams 1174b28e45c38d742a517ca95e29ab8cbbb1645fd5Jason Sams "precision mediump float;\n" 1274b28e45c38d742a517ca95e29ab8cbbb1645fd5Jason Sams "uniform vec4 u_color;\n" 1374b28e45c38d742a517ca95e29ab8cbbb1645fd5Jason Sams "void main() {\n" 1474b28e45c38d742a517ca95e29ab8cbbb1645fd5Jason Sams " gl_FragColor = u_color;\n" 1574b28e45c38d742a517ca95e29ab8cbbb1645fd5Jason Sams "}\n" 1674b28e45c38d742a517ca95e29ab8cbbb1645fd5Jason Sams}; 1774b28e45c38d742a517ca95e29ab8cbbb1645fd5Jason Sams 1874b28e45c38d742a517ca95e29ab8cbbb1645fd5Jason Samsstatic FragmentTest fpGradient = { 1974b28e45c38d742a517ca95e29ab8cbbb1645fd5Jason Sams "Solid gradient", 0, 2074b28e45c38d742a517ca95e29ab8cbbb1645fd5Jason Sams 2174b28e45c38d742a517ca95e29ab8cbbb1645fd5Jason Sams "precision mediump float;\n" 2274b28e45c38d742a517ca95e29ab8cbbb1645fd5Jason Sams "varying lowp vec4 v_color;\n" 2374b28e45c38d742a517ca95e29ab8cbbb1645fd5Jason Sams "void main() {\n" 2474b28e45c38d742a517ca95e29ab8cbbb1645fd5Jason Sams " gl_FragColor = v_color;\n" 2574b28e45c38d742a517ca95e29ab8cbbb1645fd5Jason Sams "}\n" 2674b28e45c38d742a517ca95e29ab8cbbb1645fd5Jason Sams}; 2774b28e45c38d742a517ca95e29ab8cbbb1645fd5Jason Sams 2874b28e45c38d742a517ca95e29ab8cbbb1645fd5Jason Samsstatic FragmentTest fpCopyTex = { 2974b28e45c38d742a517ca95e29ab8cbbb1645fd5Jason Sams "Texture copy", 1, 3074b28e45c38d742a517ca95e29ab8cbbb1645fd5Jason Sams 3174b28e45c38d742a517ca95e29ab8cbbb1645fd5Jason Sams "precision mediump float;\n" 3274b28e45c38d742a517ca95e29ab8cbbb1645fd5Jason Sams "varying vec2 v_tex0;\n" 3374b28e45c38d742a517ca95e29ab8cbbb1645fd5Jason Sams "uniform sampler2D u_tex0;\n" 3474b28e45c38d742a517ca95e29ab8cbbb1645fd5Jason Sams "void main() {\n" 3574b28e45c38d742a517ca95e29ab8cbbb1645fd5Jason Sams " gl_FragColor = texture2D(u_tex0, v_tex0);\n" 3674b28e45c38d742a517ca95e29ab8cbbb1645fd5Jason Sams "}\n" 3774b28e45c38d742a517ca95e29ab8cbbb1645fd5Jason Sams}; 3874b28e45c38d742a517ca95e29ab8cbbb1645fd5Jason Sams 3974b28e45c38d742a517ca95e29ab8cbbb1645fd5Jason Samsstatic FragmentTest fpCopyTexGamma = { 4074b28e45c38d742a517ca95e29ab8cbbb1645fd5Jason Sams "Texture copy with gamma", 1, 4174b28e45c38d742a517ca95e29ab8cbbb1645fd5Jason Sams 4274b28e45c38d742a517ca95e29ab8cbbb1645fd5Jason Sams "precision mediump float;\n" 4374b28e45c38d742a517ca95e29ab8cbbb1645fd5Jason Sams "varying vec2 v_tex0;\n" 4474b28e45c38d742a517ca95e29ab8cbbb1645fd5Jason Sams "uniform sampler2D u_tex0;\n" 4574b28e45c38d742a517ca95e29ab8cbbb1645fd5Jason Sams "void main() {\n" 4674b28e45c38d742a517ca95e29ab8cbbb1645fd5Jason Sams " vec4 t = texture2D(u_tex0, v_tex0);\n" 4774b28e45c38d742a517ca95e29ab8cbbb1645fd5Jason Sams " t.rgb = pow(t.rgb, vec3(1.4, 1.4, 1.4));\n" 4874b28e45c38d742a517ca95e29ab8cbbb1645fd5Jason Sams " gl_FragColor = t;\n" 4974b28e45c38d742a517ca95e29ab8cbbb1645fd5Jason Sams "}\n" 5074b28e45c38d742a517ca95e29ab8cbbb1645fd5Jason Sams}; 5174b28e45c38d742a517ca95e29ab8cbbb1645fd5Jason Sams 5274b28e45c38d742a517ca95e29ab8cbbb1645fd5Jason Samsstatic FragmentTest fpTexSpec = { 5374b28e45c38d742a517ca95e29ab8cbbb1645fd5Jason Sams "Texture spec", 1, 5474b28e45c38d742a517ca95e29ab8cbbb1645fd5Jason Sams 5574b28e45c38d742a517ca95e29ab8cbbb1645fd5Jason Sams "precision mediump float;\n" 5674b28e45c38d742a517ca95e29ab8cbbb1645fd5Jason Sams "varying vec2 v_tex0;\n" 5774b28e45c38d742a517ca95e29ab8cbbb1645fd5Jason Sams "uniform sampler2D u_tex0;\n" 5874b28e45c38d742a517ca95e29ab8cbbb1645fd5Jason Sams "void main() {\n" 5974b28e45c38d742a517ca95e29ab8cbbb1645fd5Jason Sams " vec4 t = texture2D(u_tex0, v_tex0);\n" 6074b28e45c38d742a517ca95e29ab8cbbb1645fd5Jason Sams " float simSpec = dot(gl_FragCoord.xyz, gl_FragCoord.xyz);\n" 6174b28e45c38d742a517ca95e29ab8cbbb1645fd5Jason Sams " simSpec = pow(clamp(simSpec, 0.1, 1.0), 40.0);\n" 6274b28e45c38d742a517ca95e29ab8cbbb1645fd5Jason Sams " gl_FragColor = t + vec4(simSpec, simSpec, simSpec, simSpec);\n" 6374b28e45c38d742a517ca95e29ab8cbbb1645fd5Jason Sams "}\n" 6474b28e45c38d742a517ca95e29ab8cbbb1645fd5Jason Sams}; 6574b28e45c38d742a517ca95e29ab8cbbb1645fd5Jason Sams 6674b28e45c38d742a517ca95e29ab8cbbb1645fd5Jason Samsstatic FragmentTest fpDepTex = { 6774b28e45c38d742a517ca95e29ab8cbbb1645fd5Jason Sams "Dependent Lookup", 1, 6874b28e45c38d742a517ca95e29ab8cbbb1645fd5Jason Sams 6974b28e45c38d742a517ca95e29ab8cbbb1645fd5Jason Sams "precision mediump float;\n" 7074b28e45c38d742a517ca95e29ab8cbbb1645fd5Jason Sams "varying vec2 v_tex0;\n" 7174b28e45c38d742a517ca95e29ab8cbbb1645fd5Jason Sams "uniform sampler2D u_tex0;\n" 7274b28e45c38d742a517ca95e29ab8cbbb1645fd5Jason Sams "void main() {\n" 7374b28e45c38d742a517ca95e29ab8cbbb1645fd5Jason Sams " vec4 t = texture2D(u_tex0, v_tex0);\n" 7474b28e45c38d742a517ca95e29ab8cbbb1645fd5Jason Sams " t += texture2D(u_tex0, t.xy);\n" 7574b28e45c38d742a517ca95e29ab8cbbb1645fd5Jason Sams " gl_FragColor = t;\n" 7674b28e45c38d742a517ca95e29ab8cbbb1645fd5Jason Sams "}\n" 7774b28e45c38d742a517ca95e29ab8cbbb1645fd5Jason Sams}; 7874b28e45c38d742a517ca95e29ab8cbbb1645fd5Jason Sams 7974b28e45c38d742a517ca95e29ab8cbbb1645fd5Jason Samsstatic FragmentTest fpModulateConstantTex = { 8074b28e45c38d742a517ca95e29ab8cbbb1645fd5Jason Sams "Texture modulate constant", 1, 8174b28e45c38d742a517ca95e29ab8cbbb1645fd5Jason Sams 8274b28e45c38d742a517ca95e29ab8cbbb1645fd5Jason Sams "precision mediump float;\n" 8374b28e45c38d742a517ca95e29ab8cbbb1645fd5Jason Sams "varying vec2 v_tex0;\n" 8474b28e45c38d742a517ca95e29ab8cbbb1645fd5Jason Sams "uniform sampler2D u_tex0;\n" 8574b28e45c38d742a517ca95e29ab8cbbb1645fd5Jason Sams "uniform vec4 u_color;\n" 8674b28e45c38d742a517ca95e29ab8cbbb1645fd5Jason Sams 8774b28e45c38d742a517ca95e29ab8cbbb1645fd5Jason Sams "void main() {\n" 8874b28e45c38d742a517ca95e29ab8cbbb1645fd5Jason Sams " lowp vec4 c = texture2D(u_tex0, v_tex0);\n" 8974b28e45c38d742a517ca95e29ab8cbbb1645fd5Jason Sams " c *= u_color;\n" 9074b28e45c38d742a517ca95e29ab8cbbb1645fd5Jason Sams " gl_FragColor = c;\n" 9174b28e45c38d742a517ca95e29ab8cbbb1645fd5Jason Sams "}\n" 9274b28e45c38d742a517ca95e29ab8cbbb1645fd5Jason Sams}; 9374b28e45c38d742a517ca95e29ab8cbbb1645fd5Jason Sams 9474b28e45c38d742a517ca95e29ab8cbbb1645fd5Jason Samsstatic FragmentTest fpModulateVaryingTex = { 9574b28e45c38d742a517ca95e29ab8cbbb1645fd5Jason Sams "Texture modulate gradient", 1, 9674b28e45c38d742a517ca95e29ab8cbbb1645fd5Jason Sams 9774b28e45c38d742a517ca95e29ab8cbbb1645fd5Jason Sams "precision mediump float;\n" 9874b28e45c38d742a517ca95e29ab8cbbb1645fd5Jason Sams "varying vec2 v_tex0;\n" 9974b28e45c38d742a517ca95e29ab8cbbb1645fd5Jason Sams "varying lowp vec4 v_color;\n" 10074b28e45c38d742a517ca95e29ab8cbbb1645fd5Jason Sams "uniform sampler2D u_tex0;\n" 10174b28e45c38d742a517ca95e29ab8cbbb1645fd5Jason Sams 10274b28e45c38d742a517ca95e29ab8cbbb1645fd5Jason Sams "void main() {\n" 10374b28e45c38d742a517ca95e29ab8cbbb1645fd5Jason Sams " lowp vec4 c = texture2D(u_tex0, v_tex0);\n" 10474b28e45c38d742a517ca95e29ab8cbbb1645fd5Jason Sams " c *= v_color;\n" 10574b28e45c38d742a517ca95e29ab8cbbb1645fd5Jason Sams " gl_FragColor = c;\n" 10674b28e45c38d742a517ca95e29ab8cbbb1645fd5Jason Sams "}\n" 10774b28e45c38d742a517ca95e29ab8cbbb1645fd5Jason Sams}; 10874b28e45c38d742a517ca95e29ab8cbbb1645fd5Jason Sams 10974b28e45c38d742a517ca95e29ab8cbbb1645fd5Jason Samsstatic FragmentTest fpModulateVaryingConstantTex = { 11074b28e45c38d742a517ca95e29ab8cbbb1645fd5Jason Sams "Texture modulate gradient constant", 1, 11174b28e45c38d742a517ca95e29ab8cbbb1645fd5Jason Sams 11274b28e45c38d742a517ca95e29ab8cbbb1645fd5Jason Sams "precision mediump float;\n" 11374b28e45c38d742a517ca95e29ab8cbbb1645fd5Jason Sams "varying vec2 v_tex0;\n" 11474b28e45c38d742a517ca95e29ab8cbbb1645fd5Jason Sams "varying lowp vec4 v_color;\n" 11574b28e45c38d742a517ca95e29ab8cbbb1645fd5Jason Sams "uniform sampler2D u_tex0;\n" 11674b28e45c38d742a517ca95e29ab8cbbb1645fd5Jason Sams "uniform vec4 u_color;\n" 11774b28e45c38d742a517ca95e29ab8cbbb1645fd5Jason Sams 11874b28e45c38d742a517ca95e29ab8cbbb1645fd5Jason Sams "void main() {\n" 11974b28e45c38d742a517ca95e29ab8cbbb1645fd5Jason Sams " lowp vec4 c = texture2D(u_tex0, v_tex0);\n" 12074b28e45c38d742a517ca95e29ab8cbbb1645fd5Jason Sams " c *= v_color;\n" 12174b28e45c38d742a517ca95e29ab8cbbb1645fd5Jason Sams " c *= u_color;\n" 12274b28e45c38d742a517ca95e29ab8cbbb1645fd5Jason Sams " gl_FragColor = c;\n" 12374b28e45c38d742a517ca95e29ab8cbbb1645fd5Jason Sams "}\n" 12474b28e45c38d742a517ca95e29ab8cbbb1645fd5Jason Sams}; 12574b28e45c38d742a517ca95e29ab8cbbb1645fd5Jason Sams 12674b28e45c38d742a517ca95e29ab8cbbb1645fd5Jason Samsstatic FragmentTest *gFragmentTests[] = { 12774b28e45c38d742a517ca95e29ab8cbbb1645fd5Jason Sams &fpFill, 12874b28e45c38d742a517ca95e29ab8cbbb1645fd5Jason Sams &fpGradient, 12974b28e45c38d742a517ca95e29ab8cbbb1645fd5Jason Sams &fpCopyTex, 13074b28e45c38d742a517ca95e29ab8cbbb1645fd5Jason Sams &fpCopyTexGamma, 13174b28e45c38d742a517ca95e29ab8cbbb1645fd5Jason Sams &fpTexSpec, 13274b28e45c38d742a517ca95e29ab8cbbb1645fd5Jason Sams &fpDepTex, 13374b28e45c38d742a517ca95e29ab8cbbb1645fd5Jason Sams &fpModulateConstantTex, 13474b28e45c38d742a517ca95e29ab8cbbb1645fd5Jason Sams &fpModulateVaryingTex, 13574b28e45c38d742a517ca95e29ab8cbbb1645fd5Jason Sams &fpModulateVaryingConstantTex, 13674b28e45c38d742a517ca95e29ab8cbbb1645fd5Jason Sams 13774b28e45c38d742a517ca95e29ab8cbbb1645fd5Jason Sams}; 13874b28e45c38d742a517ca95e29ab8cbbb1645fd5Jason Sams 13974b28e45c38d742a517ca95e29ab8cbbb1645fd5Jason Samsstatic const size_t gFragmentTestCount = sizeof(gFragmentTests) / sizeof(gFragmentTests[0]); 140