Страница 1 из 1
Объекты разных цветов: тысяча префабов с тысячей материалов?
Добавлено:
08 апр 2009, 11:50
ffinder
Есть: префаб кирпича, с материалом.
Нужно: каждый кирпич красить в свой цвет.
ЗЫ:Цветов много, т.е. "делаем много материалов" не проходит
Re: Объекты разных цветов: тысяча префабов с тысячей материалов?
Добавлено:
08 апр 2009, 11:59
Neodrop
Смена цвета на
gameObject.renderer.material приводит к генерации нового материала, а значит нового
Render Call, что есть совсем-совсем не оптимально. Лучше таки иметь набор разных материалов и копировать их на свои кирпичи. Так, в конечном итоге, в сцене материалов будет использовано меньше, чем в случае со сменой цвета (скриптом).
Re: Объекты разных цветов: тысяча префабов с тысячей материалов?
Добавлено:
08 апр 2009, 19:14
gnoblin
А если поделить текстуру, например, на 4х4 части (16 разных текстурок в 1й) + сделать 16 моделек кирпичей с разными uv...?
Re: Объекты разных цветов: тысяча префабов с тысячей материалов?
Добавлено:
08 апр 2009, 19:20
Neodrop
Неплохо. Но проще одну текстуру и 16 материалов с разными цветами.
Re: Объекты разных цветов: тысяча префабов с тысячей материалов?
Добавлено:
08 апр 2009, 20:02
ffinder
только вот материалов не 16 (не EGA адаптер все-таки), а как минимум 60. как максимум 256*256*256.
Re: Объекты разных цветов: тысяча префабов с тысячей материалов?
Добавлено:
08 апр 2009, 20:34
Neodrop
А на кой тебе все цвета 256*256*256 ? Это что за помойка такая?
Ответ однозначный - если кирпичей будет больше чем вариаций материала, то лучше заранее заготовить все материалы. Или не париться и наплевать на производительность.
Re: Объекты разных цветов: тысяча префабов с тысячей материалов?
Добавлено:
09 апр 2009, 17:18
Const_47
&NeoDrop
Ой.
Смена цвета на gameObject.renderer.material приводит к генерации нового материала, а значит нового Render Call, что есть совсем-совсем не оптимально.
То есть, если я напишу так
- Код: Выделить всё
function Awake() {
var obj = Resources.Load("torus");
var obj0 = Instantiate(obj,Vector3(0,0,0),Quaternion.identity);
obj0.renderer.material.color = Color(1,0,0,1);
var obj1 = Instantiate(obj,Vector3(0,1,0),Quaternion.identity);
obj1.renderer.material.color = Color(0,1,0,1);
}
то что? изменяя цвет инстанса я буду каждый раз, для каждого инстанса, генерировать новый материал? А разве ента генерация не происходит в процессе инстансирования? Поделитесь пожалуйста знаниями, мне очень
хочется понять.
Re: Объекты разных цветов: тысяча префабов с тысячей материалов?
Добавлено:
09 апр 2009, 18:32
Neodrop
Нет. При инстансировании объекта, используются его же меши, компоненты и материалы. Любое изменение материала приводит к генерации нового материала.
Re: Объекты разных цветов: тысяча префабов с тысячей материалов?
Добавлено:
09 апр 2009, 18:54
Const_47
Спасибо, да енто так. Потестил и посмотрел в инспектор:)
Re: Объекты разных цветов: тысяча префабов с тысячей материалов?
Добавлено:
09 апр 2009, 19:09
Neodrop
Я поражён, что угадал!
Re: Объекты разных цветов: тысяча префабов с тысячей материалов?
Добавлено:
10 апр 2009, 10:29
fox
to Neodrop
Re: Объекты разных цветов: тысяча префабов с тысячей материалов?
Добавлено:
20 апр 2013, 19:38
Palmer
да вы серьёзно???
просто переписываете шейдер, в нём добавляете цвет вершины к результирующему, и при создании кирпича присваиваете всем вершинам кирпича нужный цвет.
всё, материал один, всё батчится, миллион цветов и один дравкол