![]() |
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, то эффекта нет. Если не увеличивать то скайбокса нет. надо както отключить запись в буффер глубины. как? а может перейти на скайсферу? |
Ответ: ARenderEntity и ZBuffer
Сделай скай бокс размером в 1 сантиметр в длинну и ширину....(от скалинга мира зависит) и привяжи к камере по позиции. А дальше EntityOrder(SkyBox,1)
|
Ответ: ARenderEntity и ZBuffer
спасибо. попробую.
|
Ответ: ARenderEntity и ZBuffer
Ордеры очень благополучно сворачивают ZBuffer ;)
|
Ответ: ARenderEntity и ZBuffer
вспомнил. вариант не катит.
тогда будет земля за ним прорисовываться. и техника. ЗА скайбоксом. |
Ответ: ARenderEntity и ZBuffer
2 HolyDel:
никто не запрещает поставить EntityOrder отрицательным - тогда рисоваться будет _после_ сцены и еще если у тебя скайбокс - можешь поставить Код:
CameraClsMode cam, 0, 1 |
Ответ: ARenderEntity и ZBuffer
СкайБокс- зло:)
|
Ответ: ARenderEntity и ZBuffer
Цитата:
Ордер больше нуля - прорисовка после всего Меньше нуля - перед всем |
Ответ: ARenderEntity и ZBuffer
ага. щас так. картинка получается какой надо, но рендерится лишняя геометрия ЗА скайбоксом.
просто чтобы увидеть дальний верхний угол - надо увеличивать CameraRange. и сцена будте рисоваться чуть больше. где то в корень из 3 раз. мне бы хотелось чуть оптимизировать. вопрос ставлю по другому: можно как нибудь отключить запись в буффер глубины? в жиле это делается так: glDisable(GL_DEPTH_TEST) |
Ответ: ARenderEntity и ZBuffer
РендерСтейт ZENABLE. В FFP, это нужно у девайса устанавливать. Собс-но в программируемом конвейере можно установить ZENABLE = false; непосредственно в шейдере.
|
Ответ: ARenderEntity и ZBuffer
Вложений: 1
D3DRS_ZENABLE = 7 - это?
вот пояснилка: красный квадрат это скайбокс красный круг это текущий радиус обзора зеленые линии это линии фрустум пирамиды синий триугольник это камера серые точки - это танки по 25 000 триугольников каждый. синий круг - это тот радиус обзора, который необходим чтобы картинка отрисовалась нормально, но у нас раидус больше (красный круг) и будут отрисовываться 6 лишних танков, которых мы гарантированно не увидим :( |
Ответ: ARenderEntity и ZBuffer
Цитата:
|
Ответ: ARenderEntity и ZBuffer
Хм. По идее, если заюзать сферу, и возможность менять текстурные координаты ручками, для кубемапы, то этот варриант решается.
Видел библиотечку "Shader.dll", но там как я понял совсем не шейдеры были использованы. Там была игра с текстурными координатами. Так вот, если попытатся поменять текстурные координаты для кубымапы, тогда сможешь сделать сферо-кубемапу :) |
Ответ: ARenderEntity и ZBuffer
конечно не шейдеры. шейдеров на dx7 нет.
Цитата:
|
Ответ: ARenderEntity и ZBuffer
сфера- это для этого случая!
|
Ответ: ARenderEntity и ZBuffer
HolyDel, ну у сферымапы есть немалый минус - тексели разные, и поэтому некрасиво. Скайбокс намного качественее. Кстати не пробовал текстурить сферу кубемапой с Mode,2 ?
|
Ответ: ARenderEntity и ZBuffer
что еще за Mode,2 ?
|
Ответ: ARenderEntity и ZBuffer
SetCubeMode Texture,Mode
1 - Normal 2 - Reflection 3 - Refraction :) Меняет тип действа нормалей относительно позиции камеры. Это влияет на метод визуального наложение кубемапы. |
Ответ: ARenderEntity и ZBuffer
Это ты где откопал?
1-цу наверное надо делать. и скайбокс боксом. |
Ответ: ARenderEntity и ZBuffer
1 - метод это стандартное.
Откопал непомню где, в какомто сорсике увидел что юзается функция :) Тут подойдёт 2. Если наложится на Сферу кубемапа хорошо, тогда твоя проблемма будет решена :) |
Ответ: ARenderEntity и ZBuffer
Цитата:
Цитата:
Код:
sky=CreateSphere(24) |
Ответ: ARenderEntity и ZBuffer
EnvTex_Load("island\","bmp") - это встроенная ф-ия?
|
Ответ: ARenderEntity и ZBuffer
Откопал эту функцию ещё раньше 1.98 версии.
Дык, выверни ещё сферу, обнови нормали и поставь в позицию камеры. Окайно выглядит? Цитата:
Там просто грузится кубемапа из нескольких текстур. |
Ответ: ARenderEntity и ZBuffer
ЗЫ: SetCubeMode env_tex, 3 тоже дает правильный результат, при единице текстура перевернута вверх ногами, ScaleMesh sky, 1.0, -1.0, 1.0 не помагает
|
Ответ: ARenderEntity и ZBuffer
Цитата:
|
Ответ: ARenderEntity и ZBuffer
Код:
FlipMesh sky |
Ответ: ARenderEntity и ZBuffer
скригшоты неправильной работы в студию.
где то на форуме я оставлял ф-ию инвертирования нормалей. |
Ответ: ARenderEntity и ZBuffer
у меня трафик не резиновый, просто отрази (мысленно) картинку по оси Y,
я же уже дал работающий вариант, даже два - используй их. CubeMapping вобще не должен зависеть от заданных нормалей, они считаются от камеры к вершинам и отражаются. Вот как отражаются и задает SetCubeMode. |
Ответ: ARenderEntity и ZBuffer
:))) Отношение нормалей здесь как-раз играет главную роль :)
Разницу почуй, если наложить на кубик или на сферу ;) |
Ответ: ARenderEntity и ZBuffer
при чем здесь нормали? нормальи играют роль только для освещения. у него стоит EntityFX ent,1, знаит освещение вообще не просчитвается. нормали здесь совсем ни к чему.
обяхательно посмотрю твои варианты, но для етого сначала надо попасть домой. |
Ответ: ARenderEntity и ZBuffer
Нормали влияют полюбому :))) Тут как никрути.
Кубемапа проецируется таким способом: вычесляется вектор наклона между позицией камеры и вершины, затем поворачивается исходя из нормали, таким образом мы имеет отражение кубемапой. В случае с Скайбоксом, там только вектор относительно вершинам (если в пиксельном, то пикселям). |
Ответ: ARenderEntity и ZBuffer
при чем здесь нормали?
яж сделал без вообще каких либо нормалей сферическое отрашение. и кубическое будет точно таким же. влияет только позиция вершины. правка: вот статья, правда это жила, но все равно, но все равно: http://steps3d.narod.ru/tutorials/cu...-tutorial.html |
Ответ: ARenderEntity и ZBuffer
Опять не понял проблемы
1 сделай скайбокс маленьким 2 помести в поз. камеры (это в цикле) 3 поставь ордер больше 0 все это никаким боком не затронет отсечения ентити по растоянию |
Ответ: ARenderEntity и ZBuffer
проблема в том - что будет отрисовываться геометрия, которую я гарантированно не увижу.
а может и нет. |
Ответ: ARenderEntity и ZBuffer
Не будет
Скайбокс никак не повлияет на отрисовку других ентити зы. что за танки на 25 к поли ? |
Ответ: ARenderEntity и ZBuffer
25к поли это для примера.
вроде должно сработать. |
Ответ: ARenderEntity и ZBuffer
Ну что? никто ничего не подскажет? Мне тему отдельную создавать чтоль :)
|
Ответ: ARenderEntity и ZBuffer
Хз я уж давно Ашадов не юзаю. Заведи новую, может, Андрей ответит. (он тут бывает иногда)
|
Ответ: ARenderEntity и ZBuffer
Это не Ашодоу :)
Это полностью на блитце написано |
Ответ: ARenderEntity и ZBuffer
CRASHER да тут все просто, у тебя это происходит из за SetCubeMode, сделай что то вопщем вроде того...надеюсь там все понятно:)
CubeTexture-текста кубмапы Water-меш воды(плоскость) Camera-камера p.s Единственное что вставь этот кусок кода прям в начале той функции что писал то есть перед рендером кубмапы должно работать;) Код:
If EntityY#(camera) > EntityY#( water) |
Часовой пояс GMT +4, время: 14:53. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot