четверг, 30 апреля 2020 г.

Как подключить скрипт к шейдеру


Чтобы передать положение любого объекта в шейдер и произвольное значение:





Пишем C#

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Interactor : MonoBehaviour

    [SerializeField]
    float radius;

    // Update is called once per frame
    void Update()
    {
        Shader.SetGlobalVector("_Position", transform.position);
        Shader.SetGlobalFloat("_Radius", radius);
    }
}

Потом этот скрипт надо перенести на объект, который будем двигать.

Где:
[SerializeField]
    float radius;
Вносим значение radius в скрипт и на самом объекте по время Play можем менять значение и это значение будет передаваться в шейдер. Вместо radius можно написать что угодно, но соответственно и в шейдере надо напичать тоже самое.

  Shader.SetGlobalVector("_Position", transform.position);
Эта строка будет передавать в шейдер ветора3 текущее полжение.

В шейдере, в любом который вы создадите, можно создать Material properties, но сделать надо их глобальными. Тогда объект в сцене на котором будет висеть скрипт будет передавать во все шейдера глобальные свойства.

Из данного скрипта мы имеем два свойства, те что в кавычках:
_Position
_Radius

Простите за сумбурность, я не программист на данный момент, но дизайнеры, меня надеюсь поймут :) .

Вот пример:


Комментариев нет:

Отправить комментарий

Контакты: gmail mnexuss@gmail.com | ICQ 201882385 | Add me to Skype