forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Xors3D (http://forum.boolean.name/forumdisplay.php?f=126)
-   -   Пишем 3D движок - замену Xors3D (http://forum.boolean.name/showthread.php?t=18971)

Arton 11.04.2014 23:51

Ответ: Пишем 3D движок - замену Xors3D
 
Цитата:

Сообщение от L-ee-X (Сообщение 278807)
Движок загнулся и обсуждение не по теме пошло уже :D

Где и кто загнулся?????
На булке всегда обсуждения не по теме (и не только на булке).

И кстати почему "не по теме"? Разговор же как раз по теме.

bugway 13.04.2014 10:12

Ответ: Пишем 3D движок - замену Xors3D
 
Всё по теме. А я наблюдаю за происходящим, при этом не спеша пишу движок...

bugway 24.04.2014 13:53

Ответ: Пишем 3D движок - замену Xors3D
 
Народ, столкнулся с такой проблемкой - если использовать текстурный атлас, то для некоторых вершин нужно 2 текстурные координаты, что приводит к невозможности использовать индексный буфер. Кто как решал проблемку? Дублировать вертекс в таких позициях? Но тогда как выявлять такие вертексы в модели - не понимаю....

moka 24.04.2014 14:01

Ответ: Пишем 3D движок - замену Xors3D
 
Почему нету возможности использовать индексный буфер?

bugway 24.04.2014 14:19

Ответ: Пишем 3D движок - замену Xors3D
 
Цитата:

Сообщение от moka (Сообщение 279351)
Почему нету возможности использовать индексный буфер?

Так как вертекс будет иметь одну и ту же текстурную координату. А надо для одного вертекса иметь две координаты. Если тупо слать вертексы в VB без индексного буфера - то все ок - все смежные вертексы засылаются отдельно и можно задать разные координаты текстуры. А вот как такое замутить с индексным буфером - непонятно.

Mr_F_ 24.04.2014 14:20

Ответ: Пишем 3D движок - замену Xors3D
 
дублируй вертекс и меняй индексы

HolyDel 24.04.2014 14:23

Ответ: Пишем 3D движок - замену Xors3D
 
если использовать текстурный атлас для уменьшения количества смен текстур - то ничего менять ненадо. просто твои uv координаты будут ужиматься до нужного куска.
но, в DX10 появились texture arrays которые данную задачу решают лучше, избегая болячек типа смешивания цветов на пограничных выборках или там проблемы с мипами.
а в кеплере и его амд-шнгом аналоге в gl-е появились bindless текстуры, которые еще круче.

если же тебе нужен мультитекстуринг, для лайтмап например, то вторые uv координаты нужны для каждой вершины. такчто и тут никаких проблем.

вообще, если в пределах одного меша у тебя для одной вершины нужны одни данные, а для другой другие - то это уже кривой подход.

опиши задачу яснее. ну и демок накидай в тему.

Цитата:

Так как вертекс будет иметь одну и ту же текстурную координату. А надо для одного вертекса иметь две координаты. Если тупо слать вертексы в VB без индексного буфера - то все ок - все смежные вертексы засылаются отдельно и можно задать разные координаты текстуры. А вот как такое замутить с индексным буфером - непонятно.
теперь понятно. дублируй такие вертексы.

bugway 24.04.2014 14:25

Ответ: Пишем 3D движок - замену Xors3D
 
Цитата:

Сообщение от Mr_F_ (Сообщение 279355)
дублируй вертекс и меняй индексы

Решение очевидное, но вопрос как найти какой вертекс дублировать? Например есть сфера, на нее натянута текстура из текстурного атласа. На каких-то вертексах если использовать индексный буфер будет неправильный стык текстур, хотя без индексов все нормально отобразится. Не могу сообразить, как найти эти стыки, чтобы продублировать вертексы - вот в чем вопрос.


P.S. Предполагаю, что нужно как-то сравнивать текстурные координаты в каждой вершине при загрузке модели...

HolyDel 24.04.2014 14:35

Ответ: Пишем 3D движок - замену Xors3D
 
Цитата:

На каких-то вертексах если использовать индексный буфер будет неправильный стык текстур, хотя без индексов все нормально отобразится.
рисуй без индексов.
если у тебя в индкесном буфере будут все индексы уникальными, то толку от него все равно нет.

сам виноват, что взял ГАПИ 10 летней давности.

bugway 24.04.2014 14:40

Ответ: Пишем 3D движок - замену Xors3D
 
Ага, видимо проще забить на индексы, если в файле с моделью нет индексов изначально...

Mr_F_ 24.04.2014 14:41

Ответ: Пишем 3D движок - замену Xors3D
 
я не понимаю твою проблему - какая разница атлас, не атлас?
была текстура отдельно, стала в атласе - если нет тайлинга, то только применить к ЮВ оффсет и скейл, чтобы загнать в нужное место.
с тайлингом из атласа сложнее.

bugway 24.04.2014 15:48

Ответ: Пишем 3D движок - замену Xors3D
 
Цитата:

Сообщение от Mr_F_ (Сообщение 279361)
я не понимаю твою проблему - какая разница атлас, не атлас?
была текстура отдельно, стала в атласе - если нет тайлинга, то только применить к ЮВ оффсет и скейл, чтобы загнать в нужное место.
с тайлингом из атласа сложнее.

Как раз на тайловой текстуре в индексной геометрии я и споткнулся. Вопрос можно перефразировать так: конвертация неиндексированной геометрии в индексированную при использовании атласной тайловой текстуры.

P.S. Скорее всего проблему нужно решать на уровне модели, а не на уровне движка. Т.е. подводить модели под общие правила и формат...

Mr_F_ 24.04.2014 16:59

Ответ: Пишем 3D движок - замену Xors3D
 
ага, тут либо в модели каждый тайл должен своими вертексами быть окружён, либо ты должен иметь оригинальные текскоорды + скейл и оффсет в пиксельном шейдере. тогда делаешь им fmod, чтобы повторялись попиксельно, затем трансформируешь. тогда со старой геометрией может проканать.

+ с атласом есть ещё свои заморочки с фильтрацией на краях. по нормальному, если тебе нужна не point фильтрация, тебе нужно края вокруг каждой текстуры в атласе сгенерить в несколько пикселей, как будто она тайлится вширь немного. для линейной хватает +2 пикселя, для анизотропной поболее, но вроде больше 4х не требовалось.

HolyDel 24.04.2014 17:07

Ответ: Пишем 3D движок - замену Xors3D
 
Цитата:

для линейной хватает +2 пикселя
угу, для первых двух мипов. а дальше?
хотя может на том расстоянии, где нужны мипы постарше уже будет без разницы.

Цитата:

P.S. Скорее всего проблему нужно решать на уровне модели, а не на уровне движка.
был бы у тебя 10й директ - не было бы, такой проблемы.
чо вы ради 2.51% пользователей так заморачиваетесь (http://store.steampowered.com/hwsurvey/)

Mr_F_ 24.04.2014 17:32

Ответ: Пишем 3D движок - замену Xors3D
 
кстати говоря, можно ещё 3д текстуру юзать как альтернативу текстурному массиву)
каждый слой - свой тайл как раз (если тайлы одного/похожего размера). меняешь Z у выборки - выбираешь нужный.
из-за дополнительной интерполяции может быть чутка медленее, чем атлас.


Часовой пояс GMT +4, время: 04:42.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot