Показать сообщение отдельно
Старый 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)