OpenGL прозрачность текстуры на 3д модели
Всем привет, проблема такая: имею 3D модель диска для колец Сатурна, на которую применяю текстуру с прозрачностью в разных местах.
Проблема в том, что прозрачный пиксель OpenGL, видимо, всё равно воспринимает, как пиксель, который что-то закрывает, поэтому прозрачные кольца Сатурна закрывают Солце, когда не должны.
Фрагментный шейдер для планетарных колец:
#version 460 core
uniform sampler2D unColorLookup;
uniform float unInnerRadius;
uniform float unOuterRadius;
uniform vec3 unLightPos;
uniform vec3 unPlanetPos;
uniform float unPlanetRadius;
uniform float unZCoef;
in vec3 fPosition;
in vec2 texCoords;
in vec3 fWorldPosition;
in float fLogZ;
void main() {
gl_FragDepth = log2(fLogZ) * unZCoef * 0.5;
float len = length(fPosition);
float u = (len - unInnerRadius) / (unOuterRadius - unInnerRadius);
if (abs(u) > 1.0) {
gl_FragColor = vec4(0.0);
} else {
vec4 ringColor = texture(unColorLookup, texCoords);
//const float smoothingAmount = 10.0;
//float shadow = clamp(sphereIntersectAmount(normalize(fWorldPosition - unLightPos), fWorldPosition, unPlanetPos, unPlanetRadius) / smoothingAmount, 0.0, 1.0);
//ringColor.rgb *= 1.0 - shadow;
gl_FragColor = ringColor;
}
}
Можно было бы с помощью discard отсекать полностью прозрачные пиксели, но это такое себе, потому что свет Солнца должен проходить даже сквозь полупрозрачные кольца и тд.

