Нечетная граница на SCNPlane, когда альфа установлена на 0
У меня странное поведение на границах SCNPlane, я надеюсь, что любая геометрия будет иметь это, что похоже на SceneKit - удалить линию сшивания в границах краев.
Я устанавливаю прозрачность через SCNProgram и во фрагменте запускаю
float alphaBloom(float2 uv) {
uv *= 1.0 - uv.yx;
float vig = uv.x*uv.y * 15.0;
vig = pow(vig, 3.95);
return vig;
}
Похоже, геометрия нарисована с правильной альфой, а в конце нарисована линия того же цвета, что и граница, но с альфой 1.
Я верю, что вершинные и фрагментные шейдеры в порядке, и мне кажется, что это скорее проблема установки/настройки, которую я еще не знаю.
Есть ли какой-нибудь флаг, чтобы избавиться от них?
Та же плоскость с диффузным прозрачным материалом без использования программы работает нормально.
Непрозрачность установлена на да. Установка его в NO сделает альфа-канал материала постоянным, я хочу, чтобы он изменился и был равен 0 ближе к концу поверхности. Я делаю это через функцию alphaBloom, установленную выше.
1 ответ
Решено.
Для того, чтобы избавиться от лишней линии на границах:
- . непрозрачный = ложь
- #прозрачная прагма в верхней части вашей программы
- измените свой код так, чтобы он использовал предварительно умноженные альфа-каналы : return float4(0.0, 0.00000001, 0.0, 1) должен быть return float4(0.0 * 0.00000001, 1.0 * 0.00000001, 0.0 * 0.00000001, 0.00000001) без .isOpaque
ХТХ!