Fix T81169: Grease Pencil Z-depth drawing issue on OSX + AMD Graphic Cards
The grease pencil merge depth shader is designed to only work correctly in octographic mode. The uv coordinates used `noperspective` attribute. Somehow this doesn't lead to render artifacts on most platforms and was only detected on OSX + AMD cards. This fix would calculate the uv coordinate inside the fragment shader and isn't passed along from the vertex shader. Thanks to Sebastián Barschkis for providing the hardware and time and Clément Foucault for helping out with the final fix.
This commit is contained in:
parent
9f89166b52
commit
cacc1d723c
@ -1,13 +1,10 @@
|
||||
|
||||
uniform sampler2D depthBuf;
|
||||
uniform float strokeDepth2d;
|
||||
uniform bool strokeOrder3d;
|
||||
|
||||
noperspective in vec4 uvcoordsvar;
|
||||
|
||||
void main()
|
||||
{
|
||||
float depth = textureLod(depthBuf, uvcoordsvar.xy, 0).r;
|
||||
float depth = textureLod(depthBuf, gl_FragCoord.xy / vec2(textureSize(depthBuf, 0)), 0).r;
|
||||
if (strokeOrder3d) {
|
||||
gl_FragDepth = depth;
|
||||
}
|
||||
|
@ -1,8 +1,6 @@
|
||||
|
||||
uniform vec4 gpModelMatrix[4];
|
||||
|
||||
noperspective out vec4 uvcoordsvar;
|
||||
|
||||
void main()
|
||||
{
|
||||
mat4 model_matrix = mat4(gpModelMatrix[0], gpModelMatrix[1], gpModelMatrix[2], gpModelMatrix[3]);
|
||||
@ -10,5 +8,4 @@ void main()
|
||||
float x = -1.0 + float((v & 1) << 2);
|
||||
float y = -1.0 + float((v & 2) << 1);
|
||||
gl_Position = ViewProjectionMatrix * (model_matrix * vec4(x, y, 0.0, 1.0));
|
||||
uvcoordsvar = vec4((gl_Position.xy / gl_Position.w + 1.0) * 0.5, 0.0, 0.0);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user