On 21.08.2009 20:26, Ian Romanick wrote:
> All,
>
> In the next couple hours I'm planning to merge the asm-shader-rework-1
> branch to master. In my testing I have found that it passes at least as
> many (and in a couple cases more) tests than the current code. One of
> our internal tests runs about 89,000 vertex programs. This test takes
> about 30 minutes (1,800 seconds) on current Mesa master. On the new
> code it takes about 25 seconds.
Good work!
It seems to break (all of) doom3's (vertex, at least) shaders however.
At least with r200, here's the doom3 output for the main r200 vertex
shader (others break in exactly the same way).
glprogs/R200_interaction.vp
GL_PROGRAM_ERROR_STRING_ARB: line 1, char 43: error: syntax error,
unexpected $undefined
error at 34:
ariant ;
# this is slightly simpler than the ARB interaction,
# because the R200 can only emit six texture coordinates,
# so we assume that the diffuse and specular matrixes are
# the same, with higher level code splitting it into two
# passes if it isn't
#
# I am using texcoords instead of attribs, because a separate
# extension is required to use attribs with vertex array objects.
#
# input:
#
# TEX0 texture coordinates
# TEX1 tangent[0]
# TEX2 tangent[1]
# TEX3 normal
# COL vertex color
#
# c[4] localLightOrigin
# c[5] localViewOrigin
# c[6] lightProjection S
# c[7] lightProjection T
# c[8] lightProjection Q
# c[9] lightFalloff S
# c[10] bumpMatrix S
# c[11] bumpMatrix T
# c[12] diffuseMatrix S
# c[13] diffuseMatrix T
# c[14] specularMatrix S
# c[15] specularMatrix T
#
# output:
#
# texcoord 0 = light projection texGen
# texcoord 1 = light falloff texGen
# texcoord 2 = bumpmap texCoords
# texcoord 3 = specular / diffuse texCoords
# texcoord 4 = normalized halfangle vector in tangent space
# texcoord 5 = unnormalized vector to light in tangent space
TEMP R0, R1, R2, lightDir;
PARAM defaultTexCoord = { 0, 0.5, 0, 1 };
# texture 0 has three texgens
DP4 result.texcoord[0].x, vertex.position, program.env[6];
DP4 result.texcoord[0].y, vertex.position, program.env[7];
DP4 result.texcoord[0].w, vertex.position, program.env[8];
# texture 1 has one texgen
MOV result.texcoord[1], defaultTexCoord;
DP4 result.texcoord[1].x, vertex.position, program.env[9];
# textures 2 takes the base coordinates by the texture matrix
MOV result.texcoord[2], defaultTexCoord;
DP4 result.texcoord[2].x, vertex.texcoord[0], program.env[10];
DP4 result.texcoord[2].y, vertex.texcoord[0], program.env[11];
# textures 3 takes the base coordinates by the texture matrix
MOV result.texcoord[3], defaultTexCoord;
DP4 result.texcoord[3].x, vertex.texcoord[0], program.env[12];
DP4 result.texcoord[3].y, vertex.texcoord[0], program.env[13];
# texture 4's texcoords will be the halfangle in tangent space
# calculate normalized vector to light in R0
SUB lightDir, program.env[4], vertex.position;
DP3 R1, lightDir, lightDir;
RSQ R1, R1.x;
MUL R0, lightDir, R1.x;
# calculate normalized vector to viewer in R1
SUB R1, program.env[5], vertex.position;
DP3 R2, R1, R1;
RSQ R2, R2.x;
MUL R1, R1, R2.x;
# add together to become the half angle vector in object space
(non-normalized)
ADD R0, R0, R1;
# put into texture space
DP3 result.texcoord[4].x, vertex.texcoord[1], R0;
DP3 result.texcoord[4].y, vertex.texcoord[2], R0;
DP3 result.texcoord[4].z, vertex.texcoord[3], R0;
# texture 5's texcoords will be the unnormalized lightDir in tangent space
DP3 result.texcoord[5].x, vertex.texcoord[1], lightDir;
DP3 result.texcoord[5].y, vertex.texcoord[2], lightDir;
DP3 result.texcoord[5].z, vertex.texcoord[3], lightDir;
# generate the vertex color, which can be 1.0, color, or 1.0 - color
# for 1.0 : env[16] = 0, env[17] = 1
# for color : env[16] = 1, env[17] = 0
# for 1.0-color : env[16] = -1, env[17] = 1
MAD result.color, vertex.color, program.env[16],
program.env[17];
END
------------------------------------------------------------------------------
Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day
trial. Simplify your report design, integration and deployment - and focus on
what you do best, core application coding. Discover what's new with
Crystal Reports now. http://p.sf.net/sfu/bobj-july
_______________________________________________
Mesa3d-dev mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/mesa3d-dev