2d игрушка, отсечения (clipping)

Программирование на Юнити.

Re: 2d игрушка, отсечения (clipping)

Сообщение waruiyume 12 ноя 2011, 19:20

Дыркашейдер карты из bootcamp наверно подойдёт.
Изображение
Синтаксис:
Используется glsl
Shader "Transparent/Alpha_Cancel" {
Properties {
        _Color ("Main Color", Color) = (1,1,1,1)
        _SpecColor ("Spec Color", Color) = (1,1,1,0)
        _Emission ("Emissive Color", Color) = (0,0,0,0)
        _Shininess ("Shininess", Range (0.1, 1)) = 0.7
        _MainTex ("Base (RGB) Trans (A)", 2D) = "white" {}
}

SubShader {
        //Tags {"Queue"="Transparent" "IgnoreProjector"="True" "RenderType"="Transparent"}
        LOD 100
       
        Alphatest Less 0.9
        ZWrite On
        Blend SrcAlpha OneMinusSrcAlpha
        ColorMask RGB
               
        // Non-lightmapped
        Pass {
                Tags { "LightMode" = "Vertex" }
                Material {
                        Diffuse [_Color]
                        Ambient [_Color]
                        Shininess [_Shininess]
                        Specular [_SpecColor]
                        Emission [_Emission]   
                }
                Lighting On
                SeparateSpecular On
                SetTexture [_MainTex] {
                        Combine texture * primary DOUBLE, texture * primary
                }
        }
       
        // Lightmapped
        Pass {
                Tags { "LightMode" = "VertexLM" }
                BindChannels {
                        Bind "Vertex", vertex
                        Bind "normal", normal
                        Bind "texcoord1", texcoord0 // lightmap uses 2nd uv
                        Bind "texcoord", texcoord1 // main uses 1st uv
                }
                SetTexture [unity_Lightmap] {
                        matrix [unity_LightmapMatrix]
                        constantColor [_Color]
                        combine texture * constant
                }
                SetTexture [_MainTex] {
                        combine texture * previous DOUBLE, texture * primary
                }
        }
}
}
 
Аватара пользователя
waruiyume
Адепт
 
Сообщения: 6143
Зарегистрирован: 30 окт 2010, 05:03
Откуда: Ростов на Дону

Re: 2d игрушка, отсечения (clipping)

Сообщение limait 12 ноя 2011, 19:23

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

Главная камера рендерит бэкграунд. В culling mask у этой камеры отключаем слой с отсекаемыми объектами.

У второй - настраиваем Normilized View Port Rect на нужную область отсечения. Culling mask у этой камеры устанавливаем на слой с объектами, которые должны отсекаться.
limait
UNец
 
Сообщения: 15
Зарегистрирован: 30 июн 2011, 16:32

Re: 2d игрушка, отсечения (clipping)

Сообщение Riddik 12 ноя 2011, 21:03

К сожалению, решение с двумя камерами не подходит, так как плоскость отсечения не прямоугольная в общем случае, возможны ступенчатые варианты, а так же "дырки" в самом поле.
С шейдером попробую прикинуть вариант тоже.

Спасибо всем за помощь!
Аватара пользователя
Riddik
UNITрон
 
Сообщения: 160
Зарегистрирован: 18 апр 2011, 11:11

Re: 2d игрушка, отсечения (clipping)

Сообщение BlackMamba 12 ноя 2011, 21:39

если фигурки по цвету монохромные, то можно источником света проекцию на рабочую область сделать, не? :)
mail: _gdeMoiGusi@gmail.com
skype: Ellseworth
Аватара пользователя
BlackMamba
UNITрон
 
Сообщения: 305
Зарегистрирован: 06 янв 2011, 16:16
Откуда: Москва

Re: 2d игрушка, отсечения (clipping)

Сообщение Riddik 12 ноя 2011, 22:40

Нет, там спрайты с rgba-изображениями :)
Аватара пользователя
Riddik
UNITрон
 
Сообщения: 160
Зарегистрирован: 18 апр 2011, 11:11

Re: 2d игрушка, отсечения (clipping)

Сообщение Paul Siberdt 12 ноя 2011, 23:19

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

Re: 2d игрушка, отсечения (clipping)

Сообщение Riddik 13 ноя 2011, 00:02

Так и я подозреваю, что решений можно найти несколько, нигде не говорю, что решений нет вовсе:)
Однако, надейся на лучшее, готовься к худшему)
Картинку? Вроде всё подробно рассказал и даже показал схематично, только вместо звёздочек - спрайты, вместо черного фона - сложный, из нескольких слоёв анимированный бэк. Белое поле может быть любой ступенчатой формы.
Изображение

Боевую картинку показать - геморрой пока что (вроде как выходные).

Решений на пробу и так уже несколько:
- менять UV координты заползающих за границы поля спрайтов.
- через шейдеры (не очень в теме, слегка был знаком с hlsl на d3d)
- рендерить бэк в текстуру, накладывать её на плоскости вокруг поля. (Таких плоскостей будет много, а как же яблофон с его производительностью, логика и так тяжёлая уже?)

Хочется, конечно, не в бровь, а в глаз,элегантное решение :)
Аватара пользователя
Riddik
UNITрон
 
Сообщения: 160
Зарегистрирован: 18 апр 2011, 11:11

Re: 2d игрушка, отсечения (clipping)

Сообщение Paul Siberdt 13 ноя 2011, 10:36

В том и дело, что хотелось увидеть спрайты и сложный бэк с его хитрыми краями... потому что первое, что приходит в голову с приведенного примера - это черная рамка. :)

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

Re: 2d игрушка, отсечения (clipping)

Сообщение Riddik 13 ноя 2011, 13:12

В точку! Все правильно.
Только у меня даже проще - контур поля не такой сложный, края - прямые линии, ступенчатость:

Изображение
Аватара пользователя
Riddik
UNITрон
 
Сообщения: 160
Зарегистрирован: 18 апр 2011, 11:11

Re: 2d игрушка, отсечения (clipping)

Сообщение Paul Siberdt 13 ноя 2011, 23:56

А разве не подойдет вариант, когда делим фон на background и foreground и второе считаем отдельной камерой слоем выше, чем слой камеры, которая считает спрайты?

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

Re: 2d игрушка, отсечения (clipping)

Сообщение Riddik 14 ноя 2011, 10:35

Paul Siberdt, т.е. а потом рендер второй камеры (foreground) выводим в текстуру на заднюю плоскость? Айфон не даст дуба после таких фокусов?

Всё равно не понимаю, как это должно сработать, можете поподробнее описАть?
Аватара пользователя
Riddik
UNITрон
 
Сообщения: 160
Зарегистрирован: 18 апр 2011, 11:11

Re: 2d игрушка, отсечения (clipping)

Сообщение artk 26 ноя 2011, 18:53

А эта игрушка, случайно, не ваша? https://market.android.com/details?id=c ... dreflexion
Аватара пользователя
artk
Старожил
 
Сообщения: 749
Зарегистрирован: 22 май 2011, 12:22

Re: 2d игрушка, отсечения (clipping)

Сообщение Riddik 29 ноя 2011, 11:18

Нет, не наша :)
Аватара пользователя
Riddik
UNITрон
 
Сообщения: 160
Зарегистрирован: 18 апр 2011, 11:11

Пред.

Вернуться в Скрипты

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

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