[PATCH 3/5] d3dx9: Partially implement D3DXComputeTangentFrameEx().
Józef Kucia
joseph.kucia at gmail.com
Mon Jul 27 16:10:37 CDT 2015
Hi,
On Mon, Jul 27, 2015 at 7:38 PM, Matteo Bruni <matteo.mystral at gmail.com> wrote:
>
> I've got a number of nitpicks but these patches are essentially okay with me.
>
Thanks for the review.
>> +
>> + switch (declaration->Type)
>> + {
>> + case D3DDECLTYPE_FLOAT1:
>> + vec3.x = src[0];
>> + break;
>> + case D3DDECLTYPE_FLOAT2:
>> + vec3.x = src[0];
>> + vec3.y = src[1];
>> + break;
>> + case D3DDECLTYPE_FLOAT3:
>> + case D3DDECLTYPE_FLOAT4:
>> + vec3.x = src[0];
>> + vec3.y = src[1];
>> + vec3.z = src[2];
>> + break;
>> + default:
>> + ERR("Cannot read vec3\n");
>> + break;
>> + }
>
> You could sort the cases the other way around and fallthrough to make
> this part shorter. Again, this is also fine and it's up to you.
>
I was thinking about this but it seems slightly less readable to me.
>> + }
>> +
>> + if ((options & (D3DXTANGENT_WEIGHT_EQUAL | D3DXTANGENT_WEIGHT_BY_AREA)) == (D3DXTANGENT_WEIGHT_EQUAL | D3DXTANGENT_WEIGHT_BY_AREA))
>
> I would store the result of "options & (D3DXTANGENT_WEIGHT_EQUAL |
> D3DXTANGENT_WEIGHT_BY_AREA)" in a variable and use it here and below.
>
Definitely good suggestion.
>> +
>> + for (i = 0; i < num_vertices; i++)
>> + {
>> + const D3DXVECTOR4 zero = {0.0f, 0.0f, 0.0f, 1.0f};
>
> That's a weird zero :) Not sure about a better name though, maybe
> "default_vector"? Also, please make it static.
I was considering "default_vector" but i left it as "zero". I guess I
have a bad taste ;)
>> +
>> + if (isnan(weights[0])) weights[0] = 1.0f;
>> + if (isnan(weights[1])) weights[1] = 1.0f;
>> + if (isnan(weights[2])) weights[2] = 1.0f;
>> + break;
>
> This might cause problems in the (unlikely) case float exceptions are
> enabled. Ideally this case would need to be tested with native and, if
> it doesn't throw exceptions, your code would need to take care of
> that. I don't think this is super critical though, it should be easy
> to figure it out later on if some application crashes here.
I'll test this case.
More information about the wine-devel
mailing list