Нечетная граница на 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

ХТХ!

Другие вопросы по тегам