Страница 1 из 1

Шейдер прозрачных дырок (дырки от пуль!)

СообщениеДобавлено: 01 янв 2016, 14:06
Magnitofon
Сегодня весь день искал вариант создания сквозных дырок от пуль в объектах. Представьте: игрок изрешетил дверь или тонкую стенку и через нее видно, как по ту сторону в ужасе бегают враги. Это же здорово!
Вариант разбиения меша на кусочки отмел сразу. Я уверен, что есть вариант более элегантный. Второй вариант- ставить камеру с противоположной стороны объекта и рендерить с нее изображение на "дырку"- тоже не подходит по причине производительности (представьте сотни таких объектов на карте!). Я посчитал лучшим вариант использования шейдеров прозрачности. Даже нашел в сети рабочий вариант Depth Mask вот здесь- http://answers.unity3d.com/questions/704763/does-anyone-know-how-to-implement-these-depth-mask.html! Помещаешь шейдер на сплайн, сплайн ставишь перед объектом- имеем имитацию дырки.

Проблема в том, что я НИЧЕРТА не разбираюсь в шейдерах! Для меня это темный лес. В приведенном по ссылке примере шейдер глючит- при вращении камеры вокруг сплайна прозрачность то пропадает, то появляется. В общем, ведет себя безобразно. Прошу помочь мне разобраться в тонкостях прозрачных масок, буду очень признателен!

Почему прозрачность пропадает при вращении камеры?

Может у вас найдется в запасниках подходящий шейдер и вы сможете выложить пример сюда? Это был бы идеальный вариант!

Re: Шейдер прозрачных дырок (дырки от пуль!)

СообщениеДобавлено: 01 янв 2016, 22:32
alexanya11
думаю, что можно это сделать модифицированными декалями с transparent-объектами.
Только вот тогда для того, чтобы receive и cast shadows нужно будет писать дополнительный шейдер.
В принципе, могу помочь, но для начала вопрос: а может сделать сначала simple игру, а потом уже добавлять фишки?)

Re: Шейдер прозрачных дырок (дырки от пуль!)

СообщениеДобавлено: 02 янв 2016, 18:38
Magnitofon
alexanya11, я как раз пришел сюда за помощью, так что конечно! Буду очень рад, если вы мне поможете.

Что касается второго вопроса, то не хочется терять время- если что-то можно сделать сейчас, зачем откладывать?

Re: Шейдер прозрачных дырок (дырки от пуль!)

СообщениеДобавлено: 02 янв 2016, 19:21
waruiyume
Может быть это можно реализовать, через шаманизм, со стенсил буфером, а может и не быть?)

Re: Шейдер прозрачных дырок (дырки от пуль!)

СообщениеДобавлено: 03 янв 2016, 01:13
IDoNotExist
Можно сделать с помощью булевых операций как вариант https://www.assetstore.unity3d.com/en/#!/content/18544

Re: Шейдер прозрачных дырок (дырки от пуль!)

СообщениеДобавлено: 04 янв 2016, 18:37
Magnitofon
IDoNotExist писал(а):Можно сделать с помощью булевых операций как вариант https://www.assetstore.unity3d.com/en/#!/content/18544

Вряд ли- слишком накладно по производительности.

alexanya11 писал(а):думаю, что можно это сделать модифицированными декалями с transparent-объектами.
Только вот тогда для того, чтобы receive и cast shadows нужно будет писать дополнительный шейдер.
В принципе, могу помочь, но для начала вопрос: а может сделать сначала simple игру, а потом уже добавлять фишки?)


Ну так как, поможете?
Кстати, кто-нибудь может сказать, на сколько скажется на производительности такое решение? В игре может быть одновременно и 100 таких декалей, и 1000...

Re: Шейдер прозрачных дырок (дырки от пуль!)

СообщениеДобавлено: 04 янв 2016, 18:44
Woolf
А вы не задавались вопросом, почему ни в одном ААА шутере нет такого? Думаете, просто так? А я объясню - потому, что делать правильно - это никаких ресурсов не хватит, а делать фейково, через кутаут - будет выглядеть криво и коряво. Так что, не ломайте себе моск, пишите игру без дырок. Тем более, что на геймплей они не влияют.

Re: Шейдер прозрачных дырок (дырки от пуль!)

СообщениеДобавлено: 05 янв 2016, 03:19
alexanya11
Woolf писал(а):Так что, не ломайте себе моск, пишите игру без дырок. Тем более, что на геймплей они не влияют.

+, если только это не игра, где нужно за девушками в раздевалке подглядывать.

Хоть сегодня напишу пару шейдеров с комментариями, но тк я больше дружу с glsl, нежели hlsl/cg, ничего особо не обещаю. Да и ненавидеть порядком буду себя да это)
И да, думаю, что пр. 20-30 уже будет тормозить (как вариант - играть с лайфтаймом).

Re: Шейдер прозрачных дырок (дырки от пуль!)

СообщениеДобавлено: 05 янв 2016, 10:55
bojlahg
Woolf писал(а):А вы не задавались вопросом, почему ни в одном ААА шутере нет такого? Думаете, просто так? А я объясню - потому, что делать правильно - это никаких ресурсов не хватит, а делать фейково, через кутаут - будет выглядеть криво и коряво. Так что, не ломайте себе моск, пишите игру без дырок. Тем более, что на геймплей они не влияют.

Есть такое в Rainbow six siege

Re: Шейдер прозрачных дырок (дырки от пуль!)

СообщениеДобавлено: 05 янв 2016, 14:10
IDoNotExist
Magnitofon писал(а):
IDoNotExist писал(а):Можно сделать с помощью булевых операций как вариант https://www.assetstore.unity3d.com/en/#!/content/18544

Вряд ли- слишком накладно по производительности.

Это зависит от кривизны ваших рук.

В left 4 dead ранения зомби сделаны именно так. В Cry Engine так же сделано простреливание веток деревьев.
http://habrahabr.ru/post/256771/

Re: Шейдер прозрачных дырок (дырки от пуль!)

СообщениеДобавлено: 06 янв 2016, 02:01
waruiyume
Это зависит от кривизны ваших рук.

Чтобы из варианта с изменением меша со стора, прейти к отбрасыванию точек в фрагментном шейдере, как в L4D, руки нужны примерно такие, как в том анекдоте, где из деталей холодильника, всё время собирался Автомат Калашникова
[curved_hands]

Re: Шейдер прозрачных дырок (дырки от пуль!)

СообщениеДобавлено: 07 янв 2016, 09:56
IDoNotExist
waruiyume писал(а):
Это зависит от кривизны ваших рук.

Чтобы из варианта с изменением меша со стора, прейти к отбрасыванию точек в фрагментном шейдере, как в L4D, руки нужны примерно такие, как в то анекдоте, где из деталей холодильника, всё время собирался Автомат Калашникова
[curved_hands]

Речь идет не об инструменте со стора, а о методе.

Re: Шейдер прозрачных дырок (дырки от пуль!)

СообщениеДобавлено: 14 янв 2016, 03:45
MANMANA
Magnitofon писал(а):
IDoNotExist писал(а):Кстати, кто-нибудь может сказать, на сколько скажется на производительности такое решение? В игре может быть одновременно и 100 таких декалей, и 1000...


alexanya11 писал(а):+, если только это не игра, где нужно за девушками в раздевалке подглядывать.

VIP пипшоу какое-то...
косоглазия не избежать. пардон за оффтоп - не удержался