Время в шейдерах в редакторе

Раздел, посвящённый всему, что связано с программированием для Редактора Юнити. Скрипты Редактора, Wizards и прочее.

Время в шейдерах в редакторе

Сообщение DbIMok 05 сен 2014, 15:59

В папку Editor копируем такой скрипт
Синтаксис:
Используется csharp
using System;
using UnityEditor;
using UnityEngine;

public class ShaderTimeUpdate : EditorWindow {

        private static float time;
        private static Vector4 vTime;
        private EditorApplication.CallbackFunction s_backgroundUpdateCB;

        public void BackgroundUpdateFunc() {
                if (!EditorApplication.isPlaying || EditorApplication.isPaused) {
                        time = (float)EditorApplication.timeSinceStartup;
                        vTime = new Vector4(time * 0.05f, time, time * 2, time * 3);
                        Shader.SetGlobalVector("_unityTime", vTime);
                        UnityEditorInternal.InternalEditorUtility.RepaintAllViews();
                }
        }

        [MenuItem("Window/Background Updater")]
        public static void Launch() {
                EditorWindow window = GetWindow(typeof(ShaderTimeUpdate));
                window.Show();
        }

        void OnEnable() {
                s_backgroundUpdateCB = new EditorApplication.CallbackFunction(BackgroundUpdateFunc);
                EditorApplication.update += s_backgroundUpdateCB;
        }

        void OnDisable() {
                EditorApplication.update -= s_backgroundUpdateCB;
        }

}

Окошко редактора для управления временем "жизни" скрипта. И так, теперь мы изменяем в шейдере(ах) переменную _unityTime. В шейдере, где уже используется стандартная _Time дописываем
float4 _unityTime;
...
func(_Time + _unityTime);
В runtime "работает" _Time, в Editor'е _unityTime.
правильный вопрос - половина ответа. учитесь формулировать вопросы понятно.
Новости > _Telegram чат @unity3d_ru (11.6k/4.8k online) > _Telegram канал @unity_news (4.7k подписчиков) > Телеграм тема > "Спасибо"
Аватара пользователя
DbIMok
Адепт
 
Сообщения: 6372
Зарегистрирован: 31 июл 2009, 14:05

Re: Время в шейдерах в редакторе

Сообщение waruiyume 05 сен 2014, 16:44

Так, это, вроде, уже есть, правда, оно не обновляет вкладку game.
Аватара пользователя
waruiyume
Адепт
 
Сообщения: 6143
Зарегистрирован: 30 окт 2010, 05:03
Откуда: Ростов на Дону


Вернуться в Editor

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

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