ПрограммированиеФорумГрафика

GLSL: реально ли отключить запись в маску глубины для конкретных фрагментов?

#0
12:43, 29 июля 2009

Рисую ветки деревьев с альфа каналом. Хочу сделать так: нарисовать часть где альфа > 0.5 полностью непрозрачными и со включенным тестингом и записью глубины, а часть где альфа < 0.5 с тестингом глубины, но без записи в маску.

#1
12:47, 29 июля 2009

Думаю только с бубном... Но я чот не совсем понял задачу... Может так:

if (alpha > 0.5)
  gl_FragColor = color;
else
  discard;

?

#2
12:54, 29 июля 2009

Думаю, придется использовать текстуру глубины в шейдере деревьев...

#3
13:14, 29 июля 2009

Blew_zc
>Думаю, придется использовать текстуру глубины в шейдере деревьев...
Мне кажется загон.
Наверное, придется нарисовать в два прохода :/

#4
13:22, 29 июля 2009

mocia
Почему загон?

> Наверное, придется нарисовать в два прохода :/
Ну если ты в коде отличаешь <0.5 и >0.5, тогда чем плох вывод в 2 прохода?

Иначе в два прохода не получится.

#5
13:24, 29 июля 2009

mocia
Чем мой код не устраивает?

#6
13:28, 29 июля 2009

Executor
> mocia
> Чем мой код не устраивает?
mocia
Кстати, да =)

#7
13:44, 29 июля 2009

В два прохода работает, но тормозновато :/

Executor
твой код отсечет что меньше 0.5, а надо нарисовать но без записи в маску

#8
13:48, 29 июля 2009

не знаю стоит ли пробовать с текстурой глубины - будет ли шустрее работать?
...уж больно много ковыряться чтобы реализовать такое дело

#9
14:28, 29 июля 2009

mocia
>но без записи в маску
Маска - это что? Depth Buffer ?

#10
15:15, 29 июля 2009

Blew_zc
да, маска глубины == Depth Buffer

#11
15:20, 29 июля 2009

mocia
> но без записи в маску

:)

ПрограммированиеФорумГрафика

Тема в архиве.