forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Эффекты/Шейдеры (http://forum.boolean.name/forumdisplay.php?f=170)
-   -   Bloom and Lens Flares (http://forum.boolean.name/showthread.php?t=16872)

Alex_Witcher 06.06.2012 06:29

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

Скрипты для других эффектов нашел, для этого нет(

pax 06.06.2012 10:30

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

PHP код:

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() сработала корректно в билде.

По поводу андроеда - вероятно будет, где поддерживаются пост эффекты, иначе увидишь розовый экран.

Alex_Witcher 07.06.2012 07:43

Ответ: Bloom and Lens Flares
 
ох спасибо большое! работает! Как я натупился с этим Блум эфектом:)


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

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot