https://bugs.winehq.org/show_bug.cgi?id=39578
Bug ID: 39578 Summary: hlsl float constant translate error if constant name like 'c873' Product: Wine Version: 1.7.54 Hardware: x86 OS: Linux Status: UNCONFIRMED Severity: normal Priority: P2 Component: directx-d3dx9 Assignee: wine-bugs@winehq.org Reporter: gamiljydcome@gmail.com Distribution: ---
I use WINEDEBUG=+d3d_shader trace an broken 3d model game, i notice something wrong like follow:
trace:d3d_shader:shader_trace_init def c783 = 1.000000, 3.000000, 0.000000, 0.000000 warn:d3d_shader:shader_record_register_usage Shader using float constant 783 which is not supported.
But followed hlsl fragment can be translated correctly:
(hlsl)d3d_shader:shader_trace_init def c0 = -100.000000, 0.000000, 1.000000, 0.000000 ------------------------------------------ (glsl)d3d_shader:d3d_compiler const vec4 ps_lc0 = vec4(-1.00000000e+02, 0.00000000e+00, 1.00000000e+00, 0.00000000e+00);
The point is the diffrence between names: c783 c0. If hlsl fragment define variables names like c783 c771 c831 etc, then tanslate must be wrong.
I think 'def c783' is just a variables name, Right? If so it should be translate to 'const vec4 ps_lc783 = vec4...' although i don't know what's that really means.