--- cvsroot/libgender/material.C 2004/10/21 21:30:34 1.10 +++ cvsroot/libgender/material.C 2004/10/21 22:28:42 1.11 @@ -22,6 +22,12 @@ const char str_float4 [] = "float4"; const char str_float4x4 [] = "float4x4"; + const char str_sampler1d [] = "sampler1d"; + const char str_sampler2d [] = "sampler2d"; + const char str_sampler3d [] = "sampler3d"; + const char str_samplerCUBE [] = "samplerCUBE"; + const char str_samplerRECT [] = "samplerRECT"; + static CGcontext cg_context = cgCreateContext (); int var_i::next_name = 0; @@ -99,22 +105,26 @@ varying_4f vin::color0_4f ("COLOR0"); varying_3f vin::color1_3f ("COLOR1"); varying_4f vin::color1_4f ("COLOR1"); - varying_2f vin::texcoord0_2f ("TEXCOORD0"); - varying_4f vin::texcoord0_4f ("TEXCOORD0"); - varying_2f vin::texcoord1_2f ("TEXCOORD1"); - varying_4f vin::texcoord1_4f ("TEXCOORD1"); - varying_2f vin::texcoord2_2f ("TEXCOORD2"); - varying_4f vin::texcoord2_4f ("TEXCOORD2"); - varying_2f vin::texcoord3_2f ("TEXCOORD3"); - varying_4f vin::texcoord3_4f ("TEXCOORD3"); - varying_2f vin::texcoord4_2f ("TEXCOORD4"); - varying_4f vin::texcoord4_4f ("TEXCOORD4"); - varying_2f vin::texcoord5_2f ("TEXCOORD5"); - varying_4f vin::texcoord5_4f ("TEXCOORD5"); - varying_2f vin::texcoord6_2f ("TEXCOORD6"); - varying_4f vin::texcoord6_4f ("TEXCOORD6"); - varying_2f vin::texcoord7_2f ("TEXCOORD7"); - varying_4f vin::texcoord7_4f ("TEXCOORD7"); + varying_1f vin::texcoord_1f[8] = + { + varying_1f ("TEXCOORD0"), varying_1f ("TEXCOORD1"), varying_1f ("TEXCOORD2"), varying_1f ("TEXCOORD3"), + varying_1f ("TEXCOORD4"), varying_1f ("TEXCOORD5"), varying_1f ("TEXCOORD6"), varying_1f ("TEXCOORD7"), + }; + varying_2f vin::texcoord_2f[8] = + { + varying_2f ("TEXCOORD0"), varying_2f ("TEXCOORD1"), varying_2f ("TEXCOORD2"), varying_2f ("TEXCOORD3"), + varying_2f ("TEXCOORD4"), varying_2f ("TEXCOORD5"), varying_2f ("TEXCOORD6"), varying_2f ("TEXCOORD7"), + }; + varying_3f vin::texcoord_3f[8] = + { + varying_3f ("TEXCOORD0"), varying_3f ("TEXCOORD1"), varying_3f ("TEXCOORD2"), varying_3f ("TEXCOORD3"), + varying_3f ("TEXCOORD4"), varying_3f ("TEXCOORD5"), varying_3f ("TEXCOORD6"), varying_3f ("TEXCOORD7"), + }; + varying_4f vin::texcoord_4f[8] = + { + varying_4f ("TEXCOORD0"), varying_4f ("TEXCOORD1"), varying_4f ("TEXCOORD2"), varying_4f ("TEXCOORD3"), + varying_4f ("TEXCOORD4"), varying_4f ("TEXCOORD5"), varying_4f ("TEXCOORD6"), varying_4f ("TEXCOORD7"), + }; varying_1f vin::psize_1f ("PSIZE"); varying_1f vin::attr6_1f ("ATTR6"); varying_1f vin::attr7_1f ("ATTR7"); @@ -135,22 +145,14 @@ || r == vin::color0_4f || r == vin::color1_3f || r == vin::color1_4f - || r == vin::texcoord0_2f - || r == vin::texcoord0_4f - || r == vin::texcoord1_2f - || r == vin::texcoord1_4f - || r == vin::texcoord2_2f - || r == vin::texcoord2_4f - || r == vin::texcoord3_2f - || r == vin::texcoord3_4f - || r == vin::texcoord4_2f - || r == vin::texcoord4_4f - || r == vin::texcoord5_2f - || r == vin::texcoord5_4f - || r == vin::texcoord6_2f - || r == vin::texcoord6_4f - || r == vin::texcoord7_2f - || r == vin::texcoord7_4f + || r == vin::texcoord_1f[0] || r == vin::texcoord_1f[1] || r == vin::texcoord_1f[2] || r == vin::texcoord_1f[3] + || r == vin::texcoord_1f[4] || r == vin::texcoord_1f[5] || r == vin::texcoord_1f[6] || r == vin::texcoord_1f[7] + || r == vin::texcoord_2f[0] || r == vin::texcoord_2f[1] || r == vin::texcoord_2f[2] || r == vin::texcoord_2f[3] + || r == vin::texcoord_2f[4] || r == vin::texcoord_2f[5] || r == vin::texcoord_2f[6] || r == vin::texcoord_2f[7] + || r == vin::texcoord_3f[0] || r == vin::texcoord_3f[1] || r == vin::texcoord_3f[2] || r == vin::texcoord_3f[3] + || r == vin::texcoord_3f[4] || r == vin::texcoord_3f[5] || r == vin::texcoord_3f[6] || r == vin::texcoord_3f[7] + || r == vin::texcoord_4f[0] || r == vin::texcoord_4f[1] || r == vin::texcoord_4f[2] || r == vin::texcoord_4f[3] + || r == vin::texcoord_4f[4] || r == vin::texcoord_4f[5] || r == vin::texcoord_4f[6] || r == vin::texcoord_4f[7] || r == vin::psize_1f || r == vin::attr6_1f || r == vin::attr7_1f @@ -169,28 +171,25 @@ varying_4f fin::position_4f ("HPOS"); varying_4f fin::color0_4f ("COLOR0"); varying_4f fin::color1_4f ("COLOR1"); - varying_4f fin::texcoord0_4f ("TEXCOORD0"); - varying_4f fin::texcoord1_4f ("TEXCOORD1"); - varying_4f fin::texcoord2_4f ("TEXCOORD2"); - varying_4f fin::texcoord3_4f ("TEXCOORD3"); - varying_4f fin::texcoord4_4f ("TEXCOORD4"); - varying_4f fin::texcoord5_4f ("TEXCOORD5"); - varying_4f fin::texcoord6_4f ("TEXCOORD6"); - varying_4f fin::texcoord7_4f ("TEXCOORD7"); + varying_4f fin::texcoord_4f[8] = + { + varying_4f ("TEXCOORD0"), varying_4f ("TEXCOORD1"), varying_4f ("TEXCOORD2"), varying_4f ("TEXCOORD3"), + varying_4f ("TEXCOORD4"), varying_4f ("TEXCOORD5"), varying_4f ("TEXCOORD6"), varying_4f ("TEXCOORD7"), + }; bool fin::is (const var &r) { return r == fin::position_4f || r == fin::color0_4f || r == fin::color1_4f - || r == fin::texcoord0_4f - || r == fin::texcoord1_4f - || r == fin::texcoord2_4f - || r == fin::texcoord3_4f - || r == fin::texcoord4_4f - || r == fin::texcoord5_4f - || r == fin::texcoord6_4f - || r == fin::texcoord7_4f; + || r == fin::texcoord_4f[0] + || r == fin::texcoord_4f[1] + || r == fin::texcoord_4f[2] + || r == fin::texcoord_4f[3] + || r == fin::texcoord_4f[4] + || r == fin::texcoord_4f[5] + || r == fin::texcoord_4f[6] + || r == fin::texcoord_4f[7]; } struct fout fout; @@ -211,7 +210,7 @@ || r == fout::depth_1f; } - uniform_matrix_f_i mvp, mv, proj; + uniform_matrix_f mvp, mv, proj; void fragment_vector_i::build (shader_builder &b) { @@ -272,13 +271,15 @@ void debdebdebdebug ()//D { vertex_program p; - temp_4f t1; + temp_4f t1, t2; + sampler2d s2d (1); - p << t1 << " = mul(" << vin.position_4f << "," << mvp << ");\n"; + p << t2 << " = tex2D (" << s2d << ", " << vin.position_4f << ".xy);\n"; + p << t1 << " = mul (" << vin.position_4f << "," << mvp << ");\n"; p << vout.position_4f << " = " << t1 << ";\n"; p.print (); - exit (0); + //exit (0); } }