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

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

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

Сообщение SARJ 07 янв 2016, 15:41

в шейдере есть параметры

_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);
SARJ
UNIт
 
Сообщения: 61
Зарегистрирован: 14 июл 2014, 20:47
Откуда: Россия

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

Сообщение jetyb 07 янв 2016, 18:34

массивы текстур пока не поддерживаются, только в следующей версии обещали
jetyb
Адепт
 
Сообщения: 1486
Зарегистрирован: 31 окт 2011, 17:21

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

Сообщение SARJ 08 янв 2016, 00:44

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

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

И в них из скрипта передавать текстуры?
SARJ
UNIт
 
Сообщения: 61
Зарегистрирован: 14 июл 2014, 20:47
Откуда: Россия

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

Сообщение Receptor 08 янв 2016, 03:58

С массивами в шейдерах юнити пока напряг. Если не трудно, опишите задачу в целом, зачем столько текстур нужно? Возможно предложат альтернативное решение.
_VK.com
Аватара пользователя
Receptor
Адепт
 
Сообщения: 1706
Зарегистрирован: 22 ноя 2011, 07:09
Откуда: Волгодонск

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

Сообщение kripto289 08 янв 2016, 17:30

Используйте 3д текстуру http://forum.unity3d.com/threads/unity- ... es.148605/
Аватара пользователя
kripto289
UNIверсал
 
Сообщения: 476
Зарегистрирован: 30 сен 2013, 03:30
Откуда: Екатеринбург
  • Сайт

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

Сообщение DbIMok 08 янв 2016, 18:27

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;
правильный вопрос - половина ответа. учитесь формулировать вопросы понятно.
Новости > _Telegram чат @unity3d_ru (11.6k/4.8k online) > _Telegram канал @unity_news (4.7k подписчиков) > Телеграм тема > "Спасибо"
Аватара пользователя
DbIMok
Адепт
 
Сообщения: 6372
Зарегистрирован: 31 июл 2009, 14:05

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

Сообщение SARJ 15 янв 2016, 11:22

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...
SARJ
UNIт
 
Сообщения: 61
Зарегистрирован: 14 июл 2014, 20:47
Откуда: Россия


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

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

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