Страница 1 из 1

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

СообщениеДобавлено: 21 дек 2016, 12:24
iprogrammer
В документации (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);
 

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


Ведь, если звезды зажигают - значит - это кому-нибудь нужно? .....В смысле, если оно есть, то зачем-то оно нужно? Или всё-таки не нужно и можно забить теперь навсегда на это?

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

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

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

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

СообщениеДобавлено: 21 дек 2016, 23:04
waruiyume
Компилятор [unity 3D] это слово не обрабатывает, т.ч. без разницы :D

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

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

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

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

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

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

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

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

некая ложь)

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

----------

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

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

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

СообщениеДобавлено: 21 дек 2016, 23:35
waruiyume
вот это и сбивает с толку, если пофиг - то нафиг? :D Если только как depricated и выпиливание в дальнейшем..

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

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

СообщениеДобавлено: 22 дек 2016, 00:36
Cr0c
По второй ссылке:

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

СообщениеДобавлено: 22 дек 2016, 09:53
iprogrammer
Cr0c писал(а):По второй ссылке:
Изображение


Вопрос, немного отойдя в сторону: а не uniform (например float4 _Color; или float _Opacity;) что будут делать?

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

СообщениеДобавлено: 22 дек 2016, 13:14
jetyb
документация разработчиков CG
http://http.developer.nvidia.com/CgTuto ... ter03.html
Впрочем unity на uniform положить, его компилятор автоматически uniform ко всем переменным без модификаторов приписывает.

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

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

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

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

Суть я уловил, как написал @jetyb
компилятор автоматически uniform ко всем переменным без модификаторов приписывает