forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   3D-программирование (http://forum.boolean.name/forumdisplay.php?f=12)
-   -   ARenderEntity и ZBuffer (http://forum.boolean.name/showthread.php?t=5674)

HolyDel 30.01.2008 13:46

ARenderEntity и ZBuffer
 
есть большая карта и маленький CameraRange.
чтобы влез весь SkyBox, включаля дальний верхиний левый угол, приходится увеличивать CameraRange до величин, когда изображение закрывается туманом.
такая идея оказалась плохой:
CameraClsMode cam,1,1
CameraRange cam,1,1000
ARenderEntity(cam,skybox)
CameraRange cam,1,200
CameraClsMode cam,0,1
RenderWorld
плохой тем, что Z-координаты фрагмета доводятся до интервала 0..1, и такн, находящийся в 100 метрах оказывается "дальше" (и соответсвенно не выводится), чем скайбокс рисующийся в 500 метрах (ведь и CameraRange больше при отрисовке скайбокса).
это конечно касается всех фрагментов. Если с размерами SkyBox-а увеличивать и диапазон CameraRange, то эффекта нет. Если не увеличивать то скайбокса нет.
надо както отключить запись в буффер глубины. как?

а может перейти на скайсферу?

Черный крыс 30.01.2008 14:51

Ответ: ARenderEntity и ZBuffer
 
Сделай скай бокс размером в 1 сантиметр в длинну и ширину....(от скалинга мира зависит) и привяжи к камере по позиции. А дальше EntityOrder(SkyBox,1)

HolyDel 30.01.2008 14:55

Ответ: ARenderEntity и ZBuffer
 
спасибо. попробую.

moka 30.01.2008 15:26

Ответ: ARenderEntity и ZBuffer
 
Ордеры очень благополучно сворачивают ZBuffer ;)

HolyDel 30.01.2008 15:29

Ответ: ARenderEntity и ZBuffer
 
вспомнил. вариант не катит.
тогда будет земля за ним прорисовываться. и техника. ЗА скайбоксом.

ffinder 30.01.2008 17:22

Ответ: ARenderEntity и ZBuffer
 
2 HolyDel:
никто не запрещает поставить EntityOrder отрицательным - тогда рисоваться будет _после_ сцены
и еще если у тебя скайбокс - можешь поставить
Код:

CameraClsMode cam, 0, 1
экономия на стирании Color-buffer'a на старых карточках - все равно Skybox все оставшееся непрорисованное место заполняет.

FDsagizi 31.01.2008 03:31

Ответ: ARenderEntity и ZBuffer
 
СкайБокс- зло:)

tormoz 31.01.2008 04:43

Ответ: ARenderEntity и ZBuffer
 
Цитата:

Сообщение от HolyDel (Сообщение 76090)
вспомнил. вариант не катит.
тогда будет земля за ним прорисовываться. и техника. ЗА скайбоксом.

Наоборот, не будет
Ордер больше нуля - прорисовка после всего
Меньше нуля - перед всем

HolyDel 31.01.2008 11:00

Ответ: ARenderEntity и ZBuffer
 
ага. щас так. картинка получается какой надо, но рендерится лишняя геометрия ЗА скайбоксом.
просто чтобы увидеть дальний верхний угол - надо увеличивать CameraRange. и сцена будте рисоваться чуть больше.
где то в корень из 3 раз. мне бы хотелось чуть оптимизировать.

вопрос ставлю по другому:
можно как нибудь отключить запись в буффер глубины?
в жиле это делается так: glDisable(GL_DEPTH_TEST)

johnk 31.01.2008 11:06

Ответ: ARenderEntity и ZBuffer
 
РендерСтейт ZENABLE. В FFP, это нужно у девайса устанавливать. Собс-но в программируемом конвейере можно установить ZENABLE = false; непосредственно в шейдере.

HolyDel 31.01.2008 11:19

Ответ: ARenderEntity и ZBuffer
 
Вложений: 1
D3DRS_ZENABLE = 7 - это?

вот пояснилка:
красный квадрат это скайбокс
красный круг это текущий радиус обзора
зеленые линии это линии фрустум пирамиды
синий триугольник это камера
серые точки - это танки по 25 000 триугольников каждый.

синий круг - это тот радиус обзора, который необходим чтобы картинка отрисовалась нормально, но у нас раидус больше (красный круг) и будут отрисовываться 6 лишних танков, которых мы гарантированно не увидим :(

johnk 31.01.2008 11:39

Ответ: ARenderEntity и ZBuffer
 
Цитата:

D3DRS_ZENABLE = 7 - это?
Не :) Вот, посмотри: http://www.toymaker.info/Games/html/render_states.html

moka 31.01.2008 11:42

Ответ: ARenderEntity и ZBuffer
 
Хм. По идее, если заюзать сферу, и возможность менять текстурные координаты ручками, для кубемапы, то этот варриант решается.
Видел библиотечку "Shader.dll", но там как я понял совсем не шейдеры были использованы. Там была игра с текстурными координатами. Так вот, если попытатся поменять текстурные координаты для кубымапы, тогда сможешь сделать сферо-кубемапу :)

HolyDel 31.01.2008 11:49

Ответ: ARenderEntity и ZBuffer
 
конечно не шейдеры. шейдеров на dx7 нет.

Цитата:

Хм. По идее, если заюзать сферу, и возможность менять текстурные координаты ручками, для кубемапы, то этот варриант решается.
типа отрисовать на сфере куб? а может просто сферу? закрасить ее под облака.

FDsagizi 31.01.2008 11:55

Ответ: ARenderEntity и ZBuffer
 
сфера- это для этого случая!


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

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