vkd3d-shader: Implement shader model 1.0-1.3 texture projection.

This commit is contained in:
Elizabeth Figura
2025-08-09 15:33:46 -05:00
committed by Henri Verbeet
parent 44c80c60b8
commit c50210f230
Notes: Henri Verbeet 2025-11-20 18:37:00 +01:00
Approved-by: Henri Verbeet (@hverbeet)
Merge-Request: https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/1814
9 changed files with 209 additions and 9 deletions

View File

@@ -765,8 +765,10 @@ static void parse_resource_directive(struct resource_params *resource, const cha
for (;;)
{
while (isspace(*line))
++line;
u.u = strtoul(line, &rest, 0);
if (rest && *rest == '.')
if (*line == '.' || (rest && *rest == '.'))
u.f = strtof(line, &rest);
if (rest == line)
@@ -1764,6 +1766,20 @@ static void parse_test_directive(struct shader_runner *runner, const char *line)
else
fatal_error("Invalid denorm mode '%s'.\n", line);
}
else if (match_string(line, "projected", &line))
{
unsigned int index;
index = strtoul(line, (char **)&rest, 10);
if (rest == line || index >= 6)
fatal_error("Malformed projection directive '%s'.\n", line);
line = rest;
if (match_string(line, "enable", &line))
runner->projected_texture_mask |= (1u << index);
else
runner->projected_texture_mask &= ~(1u << index);
}
else
{
fatal_error("Unknown test directive '%s'.\n", line);