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

Передать в шейдер массив Texture2D

СообщениеДобавлено: 07 янв 2016, 15:41
SARJ
в шейдере есть параметры

_MainTex ("Base (RGB) Trans (A)", 2D) = "white" {}
главная текстура

sampler2D _MainTex;
тут хранится эта текстура

float4 _MainTex_ST;
что это такое я незнаю...

мне нужно добавить массив текстур
получится
sampler2D _MainTex;
sampler2D _MyTex[3];

float4 _MainTex_ST;
а вот тут как написать?
float4 _MyTex_ST[3]; - выдает ошибку
float4 _MyTex[3]_ST; - тоже ошибка

из скрипта передаю текстуры так
Синтаксис:
Используется csharp
mats.SetTexture("_MyTex0", Resources.Load("Texture001") as Texture2D);
mats.SetTexture("_MyTex1", Resources.Load("Texture002") as Texture2D);
mats.SetTexture("_MyTex2", Resources.Load("Texture003") as Texture2D);

Re: Передать в шейдер массив Texture2D

СообщениеДобавлено: 07 янв 2016, 18:34
jetyb
массивы текстур пока не поддерживаются, только в следующей версии обещали

Re: Передать в шейдер массив Texture2D

СообщениеДобавлено: 08 янв 2016, 00:44
SARJ
jetyb писал(а):массивы текстур пока не поддерживаются, только в следующей версии обещали

Как насчет костылей?
Создать в шейдере переменные 250 штук
sampler2D _MyTex0;
sampler2D _MyTex1;
sampler2D _MyTex2;
...
sampler2D _MyTex249;

И в них из скрипта передавать текстуры?

Re: Передать в шейдер массив Texture2D

СообщениеДобавлено: 08 янв 2016, 03:58
Receptor
С массивами в шейдерах юнити пока напряг. Если не трудно, опишите задачу в целом, зачем столько текстур нужно? Возможно предложат альтернативное решение.

Re: Передать в шейдер массив Texture2D

СообщениеДобавлено: 08 янв 2016, 17:30
kripto289
Используйте 3д текстуру http://forum.unity3d.com/threads/unity- ... es.148605/

Re: Передать в шейдер массив Texture2D

СообщениеДобавлено: 08 янв 2016, 18:27
DbIMok
SARJ писал(а):float4 _MainTex_ST;
что это такое я незнаю...

http://docs.unity3d.com/Manual/SL-Prope ... grams.html
sampler2D _MainTex;
sampler2D _MyTex0;
sampler2D _MyTex1;
sampler2D _MyTex2;
....
float4 _MainTex_ST;
float4 _MyTex0_ST;
float4 _MyTex1_ST;
float4 _MyTex2_ST;

Re: Передать в шейдер массив Texture2D

СообщениеДобавлено: 15 янв 2016, 11:22
SARJ
kripto289 писал(а):Используйте 3д текстуру http://forum.unity3d.com/threads/unity- ... es.148605/

На android и ios будет поддерживаться? На directx9?

DbIMok писал(а):sampler2D _MainTex;
sampler2D _MyTex0;
sampler2D _MyTex1;
sampler2D _MyTex2;
....
float4 _MainTex_ST;
float4 _MyTex0_ST;
float4 _MyTex1_ST;
float4 _MyTex2_ST;

Пока так и сделал.

Receptor писал(а):С массивами в шейдерах юнити пока напряг. Если не трудно, опишите задачу в целом, зачем столько текстур нужно? Возможно предложат альтернативное решение.

Задача передавать в шейдер сингл текстуры, и потом подставлять нужную по id. Никакие атласы (когда много текстур на одном изображении) мне не нужны. Исходные данные только сингл текстуры, каждая - отдельный файл. Я пока реализовал костыльный вариант, загружаю все в переменные и выбираю через switch...