Patch for vertex > 4 shaders
Chris Ahrendt
celticht32 at aol.com
Thu Sep 4 16:26:35 CDT 2008
Chris Ahrendt wrote:
> >Hmm. Does the application use a fixed function texture coordinate
> specified
> >with D3DECLUSAGE_FLOAT4?
>
> I don't know I can look in my logs and see if I see it...
> but don't remember off the top of my head at the moment.
>
> >It should be simple to support this. Essentially the "int coordsToUse =
> >sd->u.s.texCoords[coordIdx].dwType + 1" is wrong, this needs a better
> mapping:
>
> >decltype: coordsToUse:
>
> >D3DDECLTYPE_FLOAT1 1
> >D3DDECLTYPE_FLOAT2 2
> >D3DDECLTYPE_FLOAT3 3
> >D3DDECLTYPE_FLOAT4 4
> >D3DDECLTYPE_D3DCOLOR 4
> >D3DDECLTYPE_UBYTE4 4
> >D3DDECLTYPE_SHORT2 2
> >D3DDECLTYPE_SHORT4 4
> >D3DDECLTYPE_UBYTE4N 4
> >D3DDECLTYPE_SHORT2N 2
> >D3DDECLTYPE_SHORT4N 4
> >D3DDECLTYPE_USHORT2N 2
> >D3DDECLTYPE_USHORT4N 4
> >D3DDECLTYPE_UDEC3 3
> >D3DDECLTYPE_DEC3N 3
> >D3DDECLTYPE_FLOAT16_2 2
> >D3DDECLTYPE_FLOAT16_4 4
>
> The app. should pass these in to us already in the correct format
>
> >Also the function calls below shouldn't be selected based on a
> >switch-case statement, but rather on the declaration itself. q, r, t
> >and s should be read in a different way too. The system used for
> >providing other parameters like diffuse_funcs sounds sane here,
> >although some extra care is needed to >keep working without
> >GL_ARB_multitexture support.
>
> ok explain... I am lost here.. like I said earlier I divided it into
> the gl calls (float, int, short) and the screen went a little bonkers...
> so any suggestions here would be great =)
>
> Was thinking about it on the trip to the airport and came up with the
> following pseudo code:
>
>
> switch( vertex shader type)
> {
> case D3DDECLTYPE_FLOAT1:
> g = value 1;
> totalParms = 1;
> break;
> case D3DDECLTYPE_FLOAT2:
> case D3DDECLTYPE_SHORT2:
> case D3DDECLTYPE_USHORT2N:
> case D3DDECLTYPE_SHORT2N:
> case D3DDECLTYPE_FLOAT16_2: g = value1;
> r = value2;
> totalParms=2;
> break;
> case D3DDECLTYPE_FLOAT3:
> case D3DDECLTYPE_UDEC3:
> case D3DDECLTYPE_DEC3N: g = value1;
> r = value2;
> t= value3;
> totalParms=3;
> break;
> case D3DDECLTYPE_FLOAT4:
> case D3DDECLTYPE_D3DCOLOR:
> case D3DDECLTYPE_UBYTE4:
> case D3DDECLTYPE_SHORT4:
> case D3DDECLTYPE_UBYTE4N:
> case D3DDECLTYPE_SHORT4N:
> case D3DDECLTYPE_USHORT4N:
> case D3DDECLTYPE_FLOAT16_4:
> g = value1;
> r = value2;
> t= value3;
> s = value4;
> totalParms=4;
> break;
>
> default: TRACE("Error\n");
> return;
> break;
> }
> switch(totalParms)
> {
> case 1: gl call with 1 parm
> break;
> case 2: gl call with 2 parms
> break;
> case 3: gl call with 3 parms
> break;
> case 4: gl call with 4 parms
> break;
> default: TRACE("ERROR\n");
> break;
> }
>
> >Also I strongly recommend writing a test here. Generally, fixed
> >function attributes with non-standard data types are spooky on Windows,
> >so the real problem may be somewhere else.
>
> Is there currently a test case for this written? I think on windows it
> just ignores the parms to be honest..
>
> Chris
>
>
>
the last comment I meant to say it ignores the types and calls it with
all floats... not that it ignores it =)
chris
More information about the wine-devel
mailing list