30.03.2010, 16:44
IDoL,Вторник, 30 Марта 2010, 15:08 Написал:На данный момент вопрос стоит именно как сделать чтобы одна ветка была видна через другую ветку в одном объектеЯ тут уже в третьем сообщении подряд распинаюсь на тему того, что такой вопрос не нужно ставить.
IDoL,Вторник, 30 Марта 2010, 15:08 Написал:2 отрисовки - это рисование сперва с отключенной записью в Z-буфер а потом второе рисование уже с нейВ таком режиме у тебя второй проход рендеринга должен полностью затереть первый. Еще больше стало непонятно, нафига оно надо %)
IDoL,Вторник, 30 Марта 2010, 15:08 Написал:Я, возможно, чегото неправильно понимаю - прозрачность находится в текстурах ПЗ, верно? Прозрачность может быть в любой точке текстуры практически любого объекта.
IDoL,Вторник, 30 Марта 2010, 15:08 Написал:Или же у текстуры есть какой флаг обозначающий "в текстуре прозрачность!"?Вообще-то у текстуры есть формат. Если текстура записана в формате, в котором присутствует alpha-компонента (DXTn, ARGB8, etc), то сразу можно сделать вывод о том, что объекты с этой текстурой нужно "сортировать". Сегодня, к примеру, у художников одно видение объекта и на текстурке нету никаких областей с нулевой альфой, а завтра приходит новый арт-директор и говорит "тут надо все перерисовать, вот тут будут дырки, тут будут арочки, а тут у нас должен быть вензель". Естественно никто вензель, арочку и прочие дырки геометрией рисовать не будет, сделают полупрозрачную текстурку... И вот если закладываться на какие-то "списки", то мы тут же получим баг А если закладываться на формат - все будет продолжать нормально работать. Если же художник решит, что на объекте не должно быть полупрозрачности и она на нем не нужна вовсе, он положит на него текстурку в формате R5G6B5, в котором альфа-компоненты нет. Но тут есть проблема - прозрачность можно задать отдельно глобально для объекта установкой соответствующих стейтов девайса, настраивая правильный блендинг (для D3D гуглить D3DRS_DIFFUSEMATERIALSOURCE, D3DMCS_MATERIAL, D3DTA_DIFFUSE + D3DTA_TEXTURE + D3DTOP_MODULATE). Тут в силу вступает как раз понятие "материала", о котором ниже.
IDoL,Вторник, 30 Марта 2010, 15:08 Написал:Тоесть для определения прозрачен ли объект нам необходимо определить существуют ли области с прозрачностью в текстуре данного объекта.Обычно, как я говорил уже выше, это определяется исходя из свойств "материала", с которым рисуется данный объект. Конфигурировать пайплайн кастомно под каждый объект - это застрелиться можно. Поэтому обычно выделяют несколько типовых "конфигураций", которые и называют в общем смысле "материалами" (это актуально для FFP). Так вот при отрисовке сцены у тебя есть набор типовых "конфигураций", к примеру, из 5-10 штук. Все объекты бьются на списки в соответствии с тем, какой "конфигурацией" они должны быть отрисованы. В состав же "конфигурации" обычно входит в том числе и установка флажка на Alpha test или alpha blend. При переходе к программируемому пайплайну "материалом" становится сущность-агрегатор шейдера, набора текстур и шейдерных "констант".
IDoL,Вторник, 30 Марта 2010, 15:08 Написал:Если есть возможность, было бы здорово узнать какой алгоритм используется в ModelViewer для рисования веток дерева.Никакого %) У меня в ModelViewer ничего никуда не сортируется, так же как и в ZoneView (редактор карт который), ибо оно в девелоперских тулзах не нужно. "Качество картинки" тут вовсе не стоит во главе угла. При рендеринге я включаю и Alpha test и Alpha blend. Все пикселы, альфа которых ниже пороговой отбрасываются, а для всех, у которых выше - используется альфабленд.
Duty is everything, the greatest of joys, the deepest of sorrows.