@@ -119,21 +119,17 @@ for(
119119{Name => 'gl_triangles'},
120120{Name => 'gl_triangles_n',
121121 NormalInit => '
122- tmp1[0] = $coordsb(tri => 0) - $coordsa(tri => 0);
123- tmp1[1] = $coordsb(tri => 1) - $coordsa(tri => 1);
124- tmp1[2] = $coordsb(tri => 2) - $coordsa(tri => 2);
125- tmp2[0] = $coordsc(tri => 0) - $coordsa(tri => 0);
126- tmp2[1] = $coordsc(tri => 1) - $coordsa(tri => 1);
127- tmp2[2] = $coordsc(tri => 2) - $coordsa(tri => 2);
128- tmp3[0] = tmp1[1]*tmp2[2] - tmp2[1]*tmp1[2];
129- tmp3[1] = -(tmp1[0]*tmp2[2] - tmp2[0]*tmp1[2]);
130- tmp3[2] = tmp1[0]*tmp2[1] - tmp2[0]*tmp1[1];
131- magn = sqrtf(tmp3[0]*tmp3[0] + tmp3[1]*tmp3[1] + tmp3[2]*tmp3[2]);
132- tmp3[0] = tmp3[0] / magn;
133- tmp3[1] = tmp3[1] / magn;
134- tmp3[2] = tmp3[2] / magn;',
122+ loop(tri) %{
123+ tmp0_1[tri] = $coordsb() - $coordsa();
124+ tmp0_2[tri] = $coordsc() - $coordsa();
125+ %}
126+ tmpcross[0] = tmp0_1[1]*tmp0_2[2] - tmp0_2[1]*tmp0_1[2];
127+ tmpcross[1] = -(tmp0_1[0]*tmp0_2[2] - tmp0_2[0]*tmp0_1[2]);
128+ tmpcross[2] = tmp0_1[0]*tmp0_2[1] - tmp0_2[0]*tmp0_1[1];
129+ magn = sqrtf(tmpcross[0]*tmpcross[0] + tmpcross[1]*tmpcross[1] + tmpcross[2]*tmpcross[2]);
130+ loop(tri) %{ tmpcross[tri] /= magn; %}',
135131 NormalCodeA => '
136- glNormal3f(tmp3 [0], tmp3 [1], tmp3 [2]);
132+ glNormal3f(tmpcross [0], tmpcross [1], tmpcross [2]);
137133 '
138134},
139135{Name => 'gl_triangles_wn',
@@ -143,26 +139,25 @@ for(
143139# This may be suboptimal but should still be fast enough..
144140# We only do triangles with this.
145141pp_def(
146- $_->{Name},
147- GenericTypes => $F,
148- Pars => 'coordsa(tri=3); coordsb(tri); coordsc(tri);'.
149- ($_->{NormalArgs}//'').
150- 'colorsa(tri); colorsb(tri); colorsc(tri);',
151- Code => '
152- float tmp1[3], tmp2[3], tmp3[3], magn;
153- glBegin(GL_TRIANGLES);
154- broadcastloop %{'.
155- ($_->{NormalInit}//"\n").
156- ($_->{NormalCodeA}//'').
157- COLOR("a").VERTEX("a").
158- ($_->{NormalCodeB}//'').
159- COLOR("b").VERTEX("b").
160- ($_->{NormalCodeC}//'').
161- COLOR("c").VERTEX("c").'
162- %}
163- glEnd();
164- ',
165- @internal
142+ $_->{Name},
143+ GenericTypes => $F,
144+ Pars => 'coordsa(tri=3); coordsb(tri); coordsc(tri);'.
145+ ($_->{NormalArgs}//'').
146+ 'colorsa(tri); colorsb(tri); colorsc(tri);',
147+ Code => '
148+ float tmp0_1[3], tmp0_2[3], tmpcross[3], magn;
149+ glBegin(GL_TRIANGLES);
150+ broadcastloop %{'.
151+ ($_->{NormalInit}//"\n").
152+ ($_->{NormalCodeA}//'').
153+ COLOR("a").VERTEX("a").
154+ ($_->{NormalCodeB}//'').
155+ COLOR("b").VERTEX("b").
156+ ($_->{NormalCodeC}//'').
157+ COLOR("c").VERTEX("c").'
158+ %}
159+ glEnd();',
160+ @internal
166161);
167162}
168163
0 commit comments