У меня есть маленький шейдер, который выглядит так и имеет аккуратный эффект.Режимы смешивания GLSL, создающие прозрачность добавки
uniform float beatScale;
varying vec3 vPos;
void main() {
vec3 normPos = (normalize(vPos) + vec3(1, 1, 1))/vec3(2, 2, 2);
float alpha;
if (normPos.y < beatScale - 0.1) {
alpha = 0.0;
} else if (normPos.y < beatScale) {
alpha = 1.0 - (beatScale - normPos.y)/0.1;
} else {
alpha = 1.0;
}
gl_FragColor = vec4(normPos, alpha);
}
Но прозрачные части моих объектов перед блокировать объекты позади, выбивания пикселей, которые должны были быть оказаны.
Моя Сожалеем попытка была:
gl_FragColor = gl_FragColor + vec4(normPos, alpha);
Но это не похоже, чтобы изменить его. Я надеялся, что gl_FragColor
имел предыдущий цвет пикселя, но не играл в кости.
Как добавить вычисленный цвет к цвету, который был там раньше? Меня не волнует, что на вершине, это все светящиеся вещи, которые я могу просто добавить вместе.
Любая идея, как сделать three.js сделать это? –
Вы можете получить contex из myWebGLRenderer.getContext() и сделать theContext.disable (theContext.DEPTH_TEST) – MikaelEmtinger
(r71). Вы можете просто установить 'material.depthTest' в' false'. Реализатор выполнит настройку. –