Текстурирование материалов по скрипту
| |
Storm54 | Дата: Воскресенье, 09 Марта 2014, 20:00 | Сообщение # 21 |
постоянный участник
Сейчас нет на сайте
| Цитата И как? Ведь lod действет лишь на каждую модель. А об общем lod-e я не слышал Можно в каком-нибудь 3ds максе загрузить все объекты, объединить их и создать текстурную развертку. Тогда эти объекты будут использовать один материал.
Цитата Почему так много - карта нормалей, спекулар, цвет и все это в одной текстуре. Ну так сделать 3 атласа: дифуз, нормал и спекуляр. Если каждая текстура будет с разрешением 1024x1024, то можно будет в такой атлас запечь больше 4-х текстур. Это уже уменьшает количество материалов в разы. Что касается размера текстуры. Может я и ошибаюсь, но размер текстуры незначительно влияет на производительность(у меня в играх при любой детализации текстур разница фпс очень мала) Тут будет влиять только аппаратное ограничение видеокарты и размер видеопамяти. Но сейчас видеокарты загружают текстуры очень больших размеров ( 16384х16384 ), а может уже и больше.
Сообщение отредактировал Storm54 - Воскресенье, 09 Марта 2014, 20:08 |
|
| |
DantorS | Дата: Воскресенье, 09 Марта 2014, 21:23 | Сообщение # 22 |
заслуженный участник
Сейчас нет на сайте
| Цитата Storm54 ( ) Можно в каком-нибудь 3ds максе загрузить все объекты, объединить их и создать текстурную развертку. Тогда эти объекты будут использовать один материал. нет это не подойдет. Возникнет куча проблем. К примеру, первое что пришло на ум, физика. Попадаешь пулей в один объект разрушаются все. Это только на первый взгляд. Я уверен проблем будет очень-очень много. Цитата Storm54 ( ) Ну так сделать 3 атласа: дифуз, нормал и спекуляр. Правильно мыслишь. Спасибо. Только не 3 атласа: дифуз, нормал и спекуляр, а 3 аталса: в каждом дифуз, нормал, спекулар (тема же по поводу распределения материала, как распределить я уже понял). Цитата Storm54 ( ) Может я и ошибаюсь, но размер текстуры незначительно влияет на производительность(у меня в играх при любой детализации текстур разница фпс очень мала) А тут ты ошибаешься. Зачем по твоему нужна компрессия текстур (сжатие до меньшего разрешения). У меня на ПК чтобы было без лагов нужно ставить минимальный размер текстур Цитата Storm54 ( ) Ну так сделать 3 атласа: дифуз, нормал и спекуляр. Если каждая текстура будет с разрешением 1024x1024, то можно будет в такой атлас запечь больше 4-х текстур. Это уже уменьшает количество материалов в разы. Но как правило в играх на PC размер текстур: 2048x2048 px. Атлас тогда получится 8192x8192 px. Это много. Или 2048 и 1024 - разницы практически никакой?
Сообщение отредактировал DantorS - Воскресенье, 09 Марта 2014, 21:40 |
|
| |
Storm54 | Дата: Воскресенье, 09 Марта 2014, 22:01 | Сообщение # 23 |
постоянный участник
Сейчас нет на сайте
| Цитата Возникнет куча проблем. К примеру, первое что пришло на ум, физика. Попадаешь пулей в один объект разрушаются все. Это только на первый взгляд. Я уверен проблем будет очень-очень много. На мой взгляд это самый оптимальный вариант для статики. Кстати, объекты же можно и не соединять. Главное, чтобы они одну и ту же развертку использовали. Тогда можно будет вытворять с объектами все, что угодно.
Цитата Или 2048 и 1024 - разницы практически никакой? Если не подходить вплотную и не приглядываться, то никакой. А для более детального отображения объекта(когда игрок подходит очень близко) можно использовать LOD - включать объект, на котором материал с текстурами высокого разрешения.
|
|
| |
DantorS | Дата: Воскресенье, 09 Марта 2014, 22:31 | Сообщение # 24 |
заслуженный участник
Сейчас нет на сайте
| Цитата Storm54 ( ) Если не подходить вплотную и не приглядываться, то никакой. А для более детального отображения объекта(когда игрок подходит очень близко) можно использовать LOD - включать объект, на котором материал с текстурами высокого разрешения. Тоесть атлас мне не подходит потому что его разрешение 8192x8192
Добавлено (09.03.2014, 22:19) --------------------------------------------- Storm54, перечита твои посты в этой теме. По твоему мнению - самый оптимальный вариант - не использовать этот метод оптимизации. И делать все как есть (10 текстур на модель)?
Добавлено (09.03.2014, 22:31) --------------------------------------------- Цитата Storm54 ( ) можно использовать LOD Lod лишь заменяет mesh. Для этого ( текстура при дистанции) предназначен mipmap.
Сообщение отредактировал DantorS - Воскресенье, 09 Марта 2014, 23:18 |
|
| |
lentinant | Дата: Понедельник, 10 Марта 2014, 01:09 | Сообщение # 25 |
ленивый программист
Сейчас нет на сайте
| Цитата DantorS ( ) И делать все как есть (10 текстур на модель)? А ты не думаешь, что, если у тебя по 10 текстур на модель, то ты как-то неправильно делаешь модели и текстуры к ним?Добавлено (10.03.2014, 01:09) --------------------------------------------- У меня, все же, остается вопрос - зачем тебе вообще использовать три разных материала. Если ты, конечно, не хочешь делать их на базе существенно разных шейдеров.
Когда-то тут будут ссылки на крутые проекты. Или нет.
|
|
| |
DantorS | Дата: Понедельник, 10 Марта 2014, 01:32 | Сообщение # 26 |
заслуженный участник
Сейчас нет на сайте
| Цитата lentinant ( ) А ты не думаешь, что, если у тебя по 10 текстур на модель, то ты как-то неправильно делаешь модели и текстуры к ним? Нет как раз всё правильно. Ну не 10 получается. Лицо(дифуз,нормал,атлас(глоз,спекулар,sss),диплейсмент) + тело(кожа и одежда) (ещё 3-4) + волосы (3-4). И получается: 10-12 текстур. И таких моделей может полуится в кадре штук 20.
Добавлено (10.03.2014, 01:32) --------------------------------------------- Цитата lentinant ( ) Если ты, конечно, не хочешь делать их на базе существенно разных шейдеров. Позравляю, ты сам ответил на свой вопрос
Сообщение отредактировал DantorS - Понедельник, 10 Марта 2014, 01:33 |
|
| |
lentinant | Дата: Понедельник, 10 Марта 2014, 01:42 | Сообщение # 27 |
ленивый программист
Сейчас нет на сайте
| Цитата DantorS ( ) Позравляю, ты сам ответил на свой вопрос Следующий вопрос - нафига? Чем они так сильно должны отличаться?
Добавлено (10.03.2014, 01:40) --------------------------------------------- Цитата DantorS ( ) Нет как раз всё правильно. Ну не 10 получается. Лицо(дифуз,нормал,атлас(глоз,спекулар,sss),диплейсмент) + тело(кожа и одежда) (ещё 3-4) + волосы (3-4). И таких моделей может полуится в кадре штук 20. И у каждой, само собой, разные текстуры.Добавлено (10.03.2014, 01:42) --------------------------------------------- Кроме того, конечно же нельзя все текстуры одного вида запихнуть в один файл.
Когда-то тут будут ссылки на крутые проекты. Или нет.
Сообщение отредактировал lentinant - Понедельник, 10 Марта 2014, 01:42 |
|
| |
DantorS | Дата: Понедельник, 10 Марта 2014, 02:04 | Сообщение # 28 |
заслуженный участник
Сейчас нет на сайте
| Давай по другому. Мне необходимо использовать 20 моделей в кадре (в каждой по 10 текстур). Метод оптимизации описанный ранее (качество текстур теряется) необходим для реализации такой задачи? Добавлено (10.03.2014, 01:59) ---------------------------------------------
Цитата DantorS ( ) Кроме того, конечно же нельзя все текстуры одного вида запихнуть в один файл. Атлас? Это уже обсуждалось в этой теме.Добавлено (10.03.2014, 02:04) ---------------------------------------------
Цитата DantorS ( ) Следующий вопрос - нафига? Чем они так сильно должны отличаться? Шейдер кожи и шейдер волос значительно отличаются. Как правило 3d модели берут данные из текстур. Но тут основная работа рассчитана на код шейдера. Ну будет не 10-12 текстур, а 7-8. Это не суть. Вопрос и так остаётся открытым
|
|
| |
lentinant | Дата: Понедельник, 10 Марта 2014, 03:10 | Сообщение # 29 |
ленивый программист
Сейчас нет на сайте
| Цитата DantorS ( ) Атлас? Это уже обсуждалось в этой теме. Я не знаю, можно ли это назвать атласом. Атлас - это, обычно, когда текстуру можно разбить на сетку, и каждая ячейка сетки будет представлять отдельную текстуру (пример), и используется подобное для совмещения текстур для нескольких объектов в одном файле. Я же говорю о классическом методе текстурирования объектов. Скорей, даже развертки, а не текстурирования - когда развертка, отвечающая за каждую часть модели, помещается не в отдельный квадрат, как в атласе, а буквально куда влезет (пример). Это, кстати, существенно экономит место - куда экономней расходуется место, и можно добиться лучшего качества при более низком разрешении, в отличии от ситуации, когда текстура для каждой части находится в клетке атласа. Цитата DantorS ( ) Шейдер кожи и шейдер волос значительно отличаются. Как правило 3d модели берут данные из текстур. Но тут основная работа рассчитана на код шейдера. Ну будет не 10-12 текстур, а 7-8. Это не суть. Вопрос и так остаётся открытым Окей. Ну вот припустим, у тебя два шейдера. Но вот скажи мне, как сильно ты сэкономишь на отключении материала, занимающего от силы 5 процентов всей модели (это я про волосы).
И да, почему ты считаешь, что выполнение операций шейдерами будет более выгодно, чем отрисовка текстур?
И, у меня остается вопрос, который я задавал с самого старта - зачем изобретать велосипед-мутант? Ты когда-то слышал о подобном методе оптимизации? Почему ты считаешь, что разбираешься в оптимизации лучше, чем специалисты, создавшие непосредственно движок Unity, и что встроенной оптимизации не хватит для твоих целей? Почему, если твой метод такой хороший, никто им не пользуется?
В общем, то, чем ты занимаешься, называют "сизифов труд". Кстати, довольно многие разработчики заявляют, что нет смысла оптимизировать игру где-то до альфа версии.
На этом все, я сомневаюсь, что смогу тебе помочь хотя бы чем-то в этом вопросе.
Когда-то тут будут ссылки на крутые проекты. Или нет.
Сообщение отредактировал lentinant - Понедельник, 10 Марта 2014, 08:13 |
|
| |
|