Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > Unity > Эффекты/Шейдеры

Ответ
 
Опции темы
Старый 06.06.2012, 06:29   #1
Alex_Witcher
Нуждающийся
 
Регистрация: 15.02.2012
Сообщений: 53
Написано одно полезное сообщение
Bloom and Lens Flares

Подскажите как включить/выключить эффект скриптом? И будет ли он работать на андроиде? (самому затестить пока негде)

Скрипты для других эффектов нашел, для этого нет(
(Offline)
 
Ответить с цитированием
Старый 06.06.2012, 10:30   #2
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: Bloom and Lens Flares

Т.к. скрипт эффекта на JS, поэтому чтобы добавить его кодом придется применить немного рефлексии...

using UnityEngine;

public class 
AddRemoveBloom MonoBehaviour
{
    public 
Texture2D lensFlareVignetteMask;

    
void Update()
    {
        if(
Input.GetKeyDown(KeyCode.Space))
        {
            var 
component Camera.main.GetComponent("BloomAndLensFlares");
            if(
component!= null)
            {
                
Destroy(component);
            }
            else
            {
                
component Camera.main.gameObject.AddComponent("BloomAndLensFlares");
                var 
type component.GetType();
                
type.GetField("lensFlareShader").SetValue(componentShader.Find("Hidden/LensFlareCreate"));
                
type.GetField("vignetteShader").SetValue(componentShader.Find("Hidden/VignetteShader"));
                
type.GetField("separableBlurShader").SetValue(componentShader.Find("Hidden/SeparableBlurPlus"));
                
type.GetField("addBrightStuffOneOneShader").SetValue(componentShader.Find("Hidden/BlendOneOne"));
                
type.GetField("screenBlendShader").SetValue(componentShader.Find("Hidden/Blend"));
                
type.GetField("hollywoodFlaresShader").SetValue(componentShader.Find("Hidden/MultipassHollywoodFlares"));
                
type.GetField("brightPassFilterShader").SetValue(componentShader.Find("Hidden/BrightPassFilterForBloom"));
                
type.GetField("lensFlareVignetteMask").SetValue(componentlensFlareVignetteMask);
            }
        }
    }

На переменную lensFlareVignetteMask надо назначить текстуру Standard Assets\Image Effects (Pro Only)\_Sources\Textures\VignetteMask

Управлять шейдером так же придется через рефлексию да... либо использовать js.

Вообще, все что надо назначить из ресурсов можно посмотреть выбрав сам скрипт эффекта:


Еще желательно все шейдеры эффекта либо так же определить переменными как текстуру, либо положить в папку Resources, чтобы функция Shader.Find() сработала корректно в билде.

По поводу андроеда - вероятно будет, где поддерживаются пост эффекты, иначе увидишь розовый экран.
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Эти 3 пользователя(ей) сказали Спасибо pax за это полезное сообщение:
Alex_Witcher (07.06.2012), Amatsu (07.06.2012), cahekp (17.06.2012)
Старый 07.06.2012, 07:43   #3
Alex_Witcher
Нуждающийся
 
Регистрация: 15.02.2012
Сообщений: 53
Написано одно полезное сообщение
Ответ: Bloom and Lens Flares

ох спасибо большое! работает! Как я натупился с этим Блум эфектом
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 15:48.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com