Для чего нужно ключевое слово uniform?

Шейдеры и все-все-все.

Для чего нужно ключевое слово uniform?

Сообщение iprogrammer 21 дек 2016, 12:24

В документации (https://docs.unity3d.com/Manual/SL-PropertiesInPrograms.html) написано:

Cg/HLSL can also accept uniform keyword, but it is not necessary:
uniform float4 _MyColor;


Где-то написано, что типа если планируется прием данных в переменную из скрипта, то так надо объявлять переменную. Однако я и без этого ключевого слова спокойно изменял значение из скрипта, например

Синтаксис:
Используется csharp
GetComponent<Renderer>().material.SetFloat("_Contrast", contrast);
 

спокойно всё меняет.


Ведь, если звезды зажигают - значит - это кому-нибудь нужно? .....В смысле, если оно есть, то зачем-то оно нужно? Или всё-таки не нужно и можно забить теперь навсегда на это?
iprogrammer
UNец
 
Сообщения: 41
Зарегистрирован: 25 июн 2016, 07:10

Re: Для чего нужно ключевое слово uniform?

Сообщение Cr0c 21 дек 2016, 22:35

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

ЗДЕСЬ ещё есть
Аватара пользователя
Cr0c
Адепт
 
Сообщения: 3035
Зарегистрирован: 19 июн 2015, 13:50
Skype: cr0c81

Re: Для чего нужно ключевое слово uniform?

Сообщение waruiyume 21 дек 2016, 23:04

Компилятор [unity 3D] это слово не обрабатывает, т.ч. без разницы :D
Аватара пользователя
waruiyume
Адепт
 
Сообщения: 6143
Зарегистрирован: 30 окт 2010, 05:03
Откуда: Ростов на Дону

Re: Для чего нужно ключевое слово uniform?

Сообщение iprogrammer 21 дек 2016, 23:19

Cr0c писал(а):Но ведь гугль...
Uniform-переменные являются глобальными. Они могут использоваться шейдерами вершин или шейдерами фрагментов и определять значения, которые остаются постоянными во время выполнения программы. Примером служит значение, используемое для масштабирования точек вершин.

ЗДЕСЬ ещё есть

Не поверишь, но гуглил долго. Везде одно и то же написано. Про передачу из скрипта....

Как и в данной тобой ссылке написано:
Наша цель — передать координаты точки из программного кода на JavaScript в вершинный шейдер. Сделать это можно двумя способами: со спецификатором attribute и со спецификатором uniform

Однако я писал в самом первом сообщении, что
я и без этого ключевого слова спокойно изменял значение из скрипта

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

Поэтому получается и это
Uniform-переменные являются глобальными.

некая ложь)

Или я не понимаю, что значит "глобальная переменная"

----------

waruiyume писал(а):Компилятор [unity 3D] это слово не обрабатывает, т.ч. без разницы :D

вот это и сбивает с толку, если пофиг - то нафиг? :D Если только как depricated и выпиливание в дальнейшем..
iprogrammer
UNец
 
Сообщения: 41
Зарегистрирован: 25 июн 2016, 07:10

Re: Для чего нужно ключевое слово uniform?

Сообщение waruiyume 21 дек 2016, 23:35

вот это и сбивает с толку, если пофиг - то нафиг? :D Если только как depricated и выпиливание в дальнейшем..

Ви хочете чтобы юнитеки выпиливали неиспользуемые ими конструкции, из языков к разработки которых они никак не причастны ;;)
Аватара пользователя
waruiyume
Адепт
 
Сообщения: 6143
Зарегистрирован: 30 окт 2010, 05:03
Откуда: Ростов на Дону

Re: Для чего нужно ключевое слово uniform?

Сообщение Cr0c 22 дек 2016, 00:36

По второй ссылке:
У вас нет доступа для просмотра вложений в этом сообщении.
Аватара пользователя
Cr0c
Адепт
 
Сообщения: 3035
Зарегистрирован: 19 июн 2015, 13:50
Skype: cr0c81

Re: Для чего нужно ключевое слово uniform?

Сообщение iprogrammer 22 дек 2016, 09:53

Cr0c писал(а):По второй ссылке:
Изображение


Вопрос, немного отойдя в сторону: а не uniform (например float4 _Color; или float _Opacity;) что будут делать?
iprogrammer
UNец
 
Сообщения: 41
Зарегистрирован: 25 июн 2016, 07:10

Re: Для чего нужно ключевое слово uniform?

Сообщение jetyb 22 дек 2016, 13:14

документация разработчиков CG
http://http.developer.nvidia.com/CgTuto ... ter03.html
Впрочем unity на uniform положить, его компилятор автоматически uniform ко всем переменным без модификаторов приписывает.
jetyb
Адепт
 
Сообщения: 1486
Зарегистрирован: 31 окт 2011, 17:21

Re: Для чего нужно ключевое слово uniform?

Сообщение iprogrammer 23 дек 2016, 09:30

waruiyume писал(а):
вот это и сбивает с толку, если пофиг - то нафиг? :D Если только как depricated и выпиливание в дальнейшем..

Ви хочете чтобы юнитеки выпиливали неиспользуемые ими конструкции, из языков к разработки которых они никак не причастны ;;)

Ну всё-таки это shaderLab. То есть не совсем чистый шейдер, как он есть в реальности, емнип. То есть у Юнити есть контроль над всем происходящем внутри файла .shader А, значит, что можно контролировать и сий момент, как мне кажется. Ну да ладно.

Суть я уловил, как написал @jetyb
компилятор автоматически uniform ко всем переменным без модификаторов приписывает
iprogrammer
UNец
 
Сообщения: 41
Зарегистрирован: 25 июн 2016, 07:10


Вернуться в Shader Lab

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

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