WINED3D: Color fixups for vertex shaders

Roderick Colenbrander thunderbird2k at gmx.net
Fri Mar 10 09:15:20 CST 2006


> Either way, arrayUsageMap doesn't get initialised correctly. If we
> don't know what's in a register, we shouldn't pass it through
> arrayUsageMap, but use some other way.
> 
> I won't be around next week, but after that I'll probably try to have
> a look at d3d8 shaders.
> 

The declaration is converted to a d3d9 shader in parsedeclaration8. The
function parsetoken8 handles the conversion of a token. In this case the
following code is entered:

  case D3DVSD_TOKEN_STREAMDATA:
    if (token & 0x10000000) {
      TRACE(" 0x%08lx SKIP(%lu)\n", token, ((token & D3DVSD_SKIPCOUNTMASK)
>> D3DVSD_SKIPCOUNTSHIFT));
    } else {
      DWORD type = ((token & D3DVSD_DATATYPEMASK)  >> D3DVSD_DATATYPESHIFT);
      DWORD reg  = ((token & D3DVSD_VERTEXREGMASK) >>
D3DVSD_VERTEXREGSHIFT);
      ERR("reg: %d\n", reg);
      TRACE(" 0x%08lx REG(%s, %s)\n", token, VertexDecl8_Registers[reg],
VertexDecl8_DataTypes[type]);
    }

Because reg is set to 6 in the declaration, this translates to specular
because VertexDecl8_Registers[6] corresponds to specular. Someone in
#winehackers thought that perhaps your code should only be called for FVF
shaders.

Roderick

-- 
Bis zu 70% Ihrer Onlinekosten sparen: GMX SmartSurfer!
Kostenlos downloaden: http://www.gmx.net/de/go/smartsurfer



More information about the wine-devel mailing list