[PATCH v2 1/7] wined3d: Use color source for output colors in process_vertices_strided().

Henri Verbeet hverbeet at gmail.com
Fri May 17 09:45:31 CDT 2019


On Fri, 17 May 2019 at 13:22, Paul Gofman <gofmanp at gmail.com> wrote:
> +static void wined3d_format_get_color(const struct wined3d_format *format, const BYTE *data,
> +        struct wined3d_color *color)
> +{
Thinking about it a bit more, perhaps the the long term direction we
want this to go is something like "wined3d_format_get_vec4()", instead
of making this specific to colours. No rush though, it would be fine
to wait with that until it's actually needed.

> +        case WINED3DFMT_R32_FLOAT:
> +        case WINED3DFMT_R32G32_FLOAT:
> +        case WINED3DFMT_R32G32B32_FLOAT:
> +        case WINED3DFMT_R32G32B32A32_FLOAT:
> +        {
> +            const float *float_data = (const float *)data;
> +
> +            for (i = 0; i < format->component_count; ++i)
> +                output[i] = float_data[i];
> +
> +            break;
> +        }
Note that you leave the "implicit" components uninitialised in this
case, while you do initialise them for the other formats.

> +    if (lighting)
> +    {
> +        if (state->render_states[WINED3D_RS_COLORVERTEX])
> +        {
> +            diffuse_source = validate_material_colour_source(stream_info->use_map,
> +                    state->render_states[WINED3D_RS_DIFFUSEMATERIALSOURCE]);
> +            specular_source = validate_material_colour_source(stream_info->use_map,
> +                    state->render_states[WINED3D_RS_SPECULARMATERIALSOURCE]);
> +        }
> +        else
> +        {
> +            diffuse_source = specular_source = WINED3D_MCS_MATERIAL;
> +        }
> +    }
> +    else
> +    {
> +        diffuse_source = WINED3D_MCS_COLOR1;
> +        specular_source = WINED3D_MCS_COLOR2;
> +    }
In case it helps, wined3d_ffp_get_vs_settings() already does something
very similar, perhaps it makes sense to start from the
wined3d_ffp_vs_settings structure, instead of the raw state.



More information about the wine-devel mailing list