[Bug 45468] New: Phase Shift: tails on sustain notes not visible unless GLSL is disabled
wine-bugs at winehq.org
wine-bugs at winehq.org
Mon Jul 16 23:59:19 CDT 2018
https://bugs.winehq.org/show_bug.cgi?id=45468
Bug ID: 45468
Summary: Phase Shift: tails on sustain notes not visible unless
GLSL is disabled
Product: Wine
Version: 3.12
Hardware: x86
OS: Linux
Status: UNCONFIRMED
Severity: minor
Priority: P2
Component: directx-d3d
Assignee: wine-bugs at winehq.org
Reporter: q3aiml+wine at gmail.com
Distribution: ---
Created attachment 61811
--> https://bugs.winehq.org/attachment.cgi?id=61811
missing tail by default
During a song the notes that should be held (sustain notes) should have tails
rendered after the note indicating the hold. These tails are not visible by
default under wine. There are no visible artifacts. The notes instead appear
like normal, non-sustain notes.
Steps to reproduce:
* Install version 1.27 of Phase Shift
(http://www.dwsk.co.uk/phase_shift_downloads.html,
https://mega.co.nz/#!JkwSxayT!cKdLVz8GrRrla2jkDmOvlMWxtmsdbWvoboP_vmgLw3o)
* Run 'winetricks vcrun2013' to fix missing msvcr120.dll._strerror_s on startup
* Select Quickplay in main menu (use number 1 key to select)
* Select song Positive Force, a song that comes bundled with the full 1.27
download, or any other song with sustain notes
* Press 1 to join with keyboard
* Select Guitar intrument and Hard difficulty, or any other song and difficulty
combo with sustain notes
* Press 1 to continue and 1 again when prompted to press green to begin
* Observe that the first note of Positive Force should have a green tail
(follow by grey if the note is missed), but instead appears as a normal,
non-sustain note
The tails render properly after setting UseGLSL to disabled and MaxVersionGL to
0x30001 (cannot disable GLSL with GL 3.2 or newer).
I think this has something to do with how the generated ffp emulating shaders
calculate the alpha channel and apply an alpha test. Here is what I am seeing
leading to the pixels being discarded:
# relevant uniforms
specular_enable = [1, 1, 1, 0]
alpha_test_ref = 0.0117647061124444
ffp_material.diffuse = [0, 0, 0, 0]
# relevant bits of vertex shader
ffp_varying_diffuse.w = ffp_material.diffuse.w;
# relevant bits of fragment shader
// ffp_varying_diffuse.w = 0 -> ret.w = 0 regardless of tex0.w
ret.w = tex0.w * ffp_varying_diffuse.w;
// specular_enable.w = 0 and ret.w = 0 -> ps_out[0].a = 0
ps_out[0] = ffp_varying_specular * specular_enable + ret;
// ps_out[0].a = 0, alpha_test_ref = 0.01..., alpha test fails and discards
pixel
if (!(ps_out[0].a >= alpha_test_ref))
discard;
--
Do not reply to this email, post in Bugzilla using the
above URL to reply.
You are receiving this mail because:
You are watching all bug changes.
More information about the wine-bugs
mailing list