Blend-shader для 2D освешения

Шейдеры и все-все-все.

Blend-shader для 2D освешения

Сообщение Nuprahtor 10 янв 2011, 12:38

Здравствуйте
Возникли проблемы с реализацией шейдера для освещения в 2d
Суть такова: имеется плейн, полностью черный, который закрывает весь экран. Его должен как бы "прорезать" другой плейн, с текстурой кругового света, то есть прорезать именно в тех местах, где текстура имеет белый цвет.
С шейдерами я не знаком, все, что я нашел, это только шейдер, который смешивает две текстуры в одном материале, но это не то, что мне надо (во-первых, он не отрезает один участок текстуры от другого, а во-вторых, хотелось бы, чтобы плейн со светом и плейн с темнотой были разными объектами-материалами)

Синтаксис:
Используется glsl
Shader "2 Texture Blend" {
        Properties {
                _Blend ("Blend", Range (0, 1)) = 0.5
                _MainTex ("Base (RGB)", 2D) = "white"
                _BlendTex ("Blend (RGB)", 2D) = "black"
               
        }
        SubShader {
        Blend SrcAlpha OneMinusSrcAlpha  
        Blend DstColor Zero
                Pass {
                        SetTexture [_MainTex]
                       
                        SetTexture [_BlendTex] {
                                constantColor (0, 0, 0, [_Blend])
                                combine texture lerp (constant) previous
                        }
                }
        }
}
Аватара пользователя
Nuprahtor
UNец
 
Сообщения: 41
Зарегистрирован: 06 дек 2009, 16:44
Откуда: http://nuprahtor.wordpress.com/

Re: Blend-shader для 2D освешения

Сообщение Battle Angel Alita 10 янв 2011, 14:29

Прочитала пять раз, ничего не поняла.
Мозг рака
Изображение
Аватара пользователя
Battle Angel Alita
UNIверсал
 
Сообщения: 476
Зарегистрирован: 25 ноя 2009, 14:52

Re: Blend-shader для 2D освешения

Сообщение Paul Siberdt 10 янв 2011, 14:59

Угу, а объясните-ка на пальцах, чего хотите добиться, а в чем реализуется задумка :)
Аватара пользователя
Paul Siberdt
Адепт
 
Сообщения: 5317
Зарегистрирован: 20 июн 2009, 21:24
Откуда: Moscow, Russia
Skype: siberdt
  • Сайт

Re: Blend-shader для 2D освешения

Сообщение Nuprahtor 10 янв 2011, 15:51

Ок, постараюсь объяснить как можно понятнее.
Вот скриншоты игры, где реализован такой тип освещения:
http://gamin.ru/sites/all/files/screenshots/beacon-2322.png
http://gamin.ru/sites/all/files/screenshots/beacon-2352.png
Как видно, персонаж находится в круге света, а вокруг него - темнота. Свет является спрайтом-маской, белые участки спрайта смешиваются с черной текстурой, и через них видно то, что находится за текстурой.
Мне нужен такой шейдер для текстуры, который будет прорезаться через заданную текстуру
Вот как-то так:)
Аватара пользователя
Nuprahtor
UNец
 
Сообщения: 41
Зарегистрирован: 06 дек 2009, 16:44
Откуда: http://nuprahtor.wordpress.com/

Re: Blend-shader для 2D освешения

Сообщение Battle Angel Alita 10 янв 2011, 16:07

Nuprahtor писал(а):Свет является спрайтом-маской, белые участки спрайта смешиваются с черной текстурой, и через них видно то, что находится за текстурой.

Делается это так - берётся такая текстура
lit.png

устанавливается Wrap mode в Clamp, и ложится на плашку перед камерой с блендингом Multiply
У вас нет доступа для просмотра вложений в этом сообщении.
Мозг рака
Изображение
Аватара пользователя
Battle Angel Alita
UNIверсал
 
Сообщения: 476
Зарегистрирован: 25 ноя 2009, 14:52

Re: Blend-shader для 2D освешения

Сообщение Nuprahtor 10 янв 2011, 16:26

Спасибо за ответ
Для multiply блендинга поставил текстуре шейдер из системы партиклов
Получилась такая картинка (без темной текстуры, так как темная текстура все равно закрывает экран и кроме нее ничего не видно, буду разбираться в шейдерах)
http://www.foul-invasion.ucoz.ru/wip/FireflyNocturne/NocturneProblemWithLighting.jpg
Аватара пользователя
Nuprahtor
UNец
 
Сообщения: 41
Зарегистрирован: 06 дек 2009, 16:44
Откуда: http://nuprahtor.wordpress.com/

Re: Blend-shader для 2D освешения

Сообщение Paul Siberdt 10 янв 2011, 16:30

Если разделить рендер на две камеры, можно во вторую рисовать белые маски видимости (дополнительные черно-белые плашки) для каждого освещенного предмета, брать полученную картинку белых клякс на черном поле и бросать модулейтом на картинку основной камеры. Но неа энто нужна Pro-версия.
Аватара пользователя
Paul Siberdt
Адепт
 
Сообщения: 5317
Зарегистрирован: 20 июн 2009, 21:24
Откуда: Moscow, Russia
Skype: siberdt
  • Сайт

Re: Blend-shader для 2D освешения

Сообщение Nuprahtor 10 янв 2011, 16:31

Paul Siberdt писал(а):Если разделить рендер на две камеры, можно во вторую рисовать белые маски видимости (дополнительные черно-белые плашки) для каждого освещенного предмета, брать полученную картинку белых клякс на черном поле и бросать модулейтом на картинку основной камеры. Но неа энто нужна Pro-версия.

Про-версией не обладаю, к сожалению:(
Аватара пользователя
Nuprahtor
UNец
 
Сообщения: 41
Зарегистрирован: 06 дек 2009, 16:44
Откуда: http://nuprahtor.wordpress.com/

Re: Blend-shader для 2D освешения

Сообщение Battle Angel Alita 10 янв 2011, 18:23

Синтаксис:
Используется glsl
Shader "Lit"
{
        Properties
        {
                _LitTex ("Lit", 2D) = "white"
        }
        SubShader
        {
                Tags {"Queue"="Transparent" "RenderType"="Transparent"}
               
                Fog {Mode off}
                ZWrite Off
                ColorMask RGB
                Blend DstColor Zero
               
                Pass
                {
                        SetTexture [_LitTex]
                        {
                                Combine texture
                        }
                }
        }
}
 
Мозг рака
Изображение
Аватара пользователя
Battle Angel Alita
UNIверсал
 
Сообщения: 476
Зарегистрирован: 25 ноя 2009, 14:52


Вернуться в Shader Lab

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 5