forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Xors3D (http://forum.boolean.name/forumdisplay.php?f=126)
-   -   Xors3D (http://forum.boolean.name/showthread.php?t=6180)

Knightmare 16.02.2011 10:37

Ответ: Xors3D
 
Цитата:

Сообщение от Amatsu (Сообщение 179090)
Вопрос по поводу теней - попытался сделать тени на уровне от самого уровня, получилось вот что http://images.tvlg.ru/images/65759763007493176218.jpg Пока не нашел, как отключить "полутона" при затемнении объекта, да и не думаю что такая возможность есть, разве что шейдер править. Потому вопрос - можно ли у модели отключить самозатенение, но при этом чтобы он отбрасывал тени на другие объекты и принимал тени с других объектов? То есть тени от уровня на уровне я допустим сделаю лайтмапой, но хотелось бы чтобы персонажи не просто отбрасывали тени на уровень, но и принимали тени от него, то есть заходя грубо говоря в темный угол затемнялись?

В xLightShadowEpsilons() первое значение подкрути, судя по скрину.
Насчет отключения самозатенения - человеки, вы вообще как себе это представляете? Есть теневая карта, и фиг знает какой пиксел какому объету принадлежит там. Можно иметь какой буфер хранящий идентификаторы объекта чтобы различать, но все равно, будут неточности.

radiantstudio 16.02.2011 13:40

Ответ: Xors3D
 
Цитата:

Сообщение от HolyDel (Сообщение 179089)
попробуй поставить значение кратное n^2.
например 1024.

К сожалению не помогает. Вообще значения меньше 1500 приводят к страшному результату.
Кстати и при значении 2048 артефакт тоже есть, но очень очень редко проявляется.

Amatsu 16.02.2011 14:30

Ответ: Xors3D
 
Цитата:

Сообщение от Knightmare (Сообщение 179094)
В xLightShadowEpsilons() первое значение подкрути, судя по скрину.

Ок, попробую, спасибо :)

Amatsu 16.02.2011 19:32

Ответ: Xors3D
 
Попробовал покрутить - "полутона" исчезли, зато вылезло http://images.tvlg.ru/images/24587438978767700276.jpg

Knightmare 16.02.2011 19:43

Ответ: Xors3D
 
Читаем о shadow-mapping'e, понимаем что это обычное дело.

Amatsu 16.02.2011 20:30

Ответ: Xors3D
 
Ок, значит попробую как-нибудь схитрить :)

Knightmare 16.02.2011 20:44

Ответ: Xors3D
 
Размеры мира какие примерно? Т.е. допустим на кубе 1х1х1 будет очень заметно. А на 100х100х100 уже нет. Точность она конечная, такие дела, и чтобы не было ошибочного самозатенения приходится обрезать диапазон.

Amatsu 16.02.2011 20:46

Ответ: Xors3D
 
Размеры мира пока не определял, я пока просто копаюсь в ксорсе, смотрю что да как.
Наверное просто сделаю по старинке - весь уровень в статичной лайтмапе, а от динамичных объектов - тень

Ganociy 14.03.2011 21:17

Ответ: Xors3D
 
Не могу отыскать пример Island. Где можно достать?

Ganociy 14.03.2011 21:37

Ответ: Xors3D
 
Всё. Нашёл. Вот выкладываю, что бы другие не искали:
http://www.blitzbasic.com/Community/...hp?topic=86061

chuvak2007f 04.07.2011 02:39

Ответ: Xors3D
 
Какие связки лучше использовать в пропорции: скорость выполнения/скорость создания/качество кода:
xors + C или xors + Blitz, 3 вариант?

пример такой: создаю в одном кадре много объектов, отворачиваю камеру за их пределы, прорисовка будет продолжаться или выпадает?

есть ли возмозможность (туман не предлагать) уменьшать с расстоянием кол-во полигонов на объектах, как в гта =), но при этом объекты будут видимы, или это нужно делать ручками и возможно ли?
примеры если можно в студию, типа так:
xCreatePoligonUmenshatel(1000, 100)
каждые 1000 пикселей уменьшать на 100 полигонов )))

снова создаю много объектов, смотрю на них, будут ли отрисовываться те которые не видимы (т.е. за данными объектами в том же кадре)?

можно ли как-то сделать чтобы отрисовка невидимых объектов (находящихся за другими), в том же кадре, не происходила? эдакая панацея:
xPaintHidenObjects(false)

NitE 04.07.2011 04:32

Ответ: Xors3D
 
BlitzMax + Xors3D.

Объекты вне зоны видимости не рисуются.

Систему ЛОДов ручками. (Нет, не возможно, другие для этого используют уличную магию, которя тебе не доступна.)

Отрисовка невидимых объектов кажется не происходит, но если-б они и рисовались, ты-бы их не увидел, потому что они невидимые.

HolyDel 04.07.2011 11:15

Ответ: Xors3D
 
Цитата:

пример такой: создаю в одном кадре много объектов, отворачиваю камеру за их пределы, прорисовка будет продолжаться или выпадает?
прорисовка выпадает. но количество таких объектов все равно ограниченно. это связано с линейной структурой сценографа и, видимо, с обрезкой по боксу изначально. т-е если создать миллион объектов, то даже если в кадре будет лишь 2000 из них - все равно будет работать не так быстро - как хотелось-бы.

Mr_F_ 04.07.2011 13:06

Ответ: Xors3D
 
Цитата:

скорость выполнения
Цитата:

качество кода
свой двиг под конкретную цель
имхо

Цитата:

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

Цитата:

есть ли возмозможность (туман не предлагать) уменьшать с расстоянием кол-во полигонов на объектах, как в гта =), но при этом объекты будут видимы, или это нужно делать ручками и возможно ли?
примеры если можно в студию, типа так:
xCreatePoligonUmenshatel(1000, 100)
каждые 1000 пикселей уменьшать на 100 полигонов )))
автоматически уменьшать полигоны - это тупо, потому что автомат будет делать кривые сетки. реальные лоды должны делать люди, стараясь оставлять контуры со всех сторон максимально читаемыми, убирая полигоны во внутренних местах. тем не менее автоматическая технология такая вроде есть - progressive mesh, но там мутно это всё работает (и вообще только с .x), в ксорсе он не поддерживается.

Цитата:

снова создаю много объектов, смотрю на них, будут ли отрисовываться те которые не видимы (т.е. за данными объектами в том же кадре)?
будут конечно. хотя есть такая фишка: если объект рисуется, но он уже перекрыт другим объектом, то на перекрытые пиксели не считается пиксель шейдер. не знаю сортируется ли оно в ксорсе от передних к дальним, но это в принципе могло бы помочь. естественно это никак не уменьшает нагрузку на вертексы/трианглы - для полного отсекания перекрытых мешей в играх используют разные алгоритмы, например портальный рендеринг, окклюдеры (порталы наоборот), проверки загораживания через occlusion query (dx9+ only) - не уверен насчёт существования последнего в ксорсе, но оно в принципе лагучее - если у кого внезапно исчезали/появлялись куски сцены при быстром вращении камеры в дюке форевер - тот поймёт. окклюдеры и порталы, в общем, годное решение, (но только в случае, если твой левел похож на интерьеры) рекомендую глянуть как оно примерно устроено:
http://geck.bethsoft.com/index.php/Occlusion_Culling
для аутдор пространств такой подход не катит, собственно поэтому глупо требовать от разрабов ксорса всех этих алгоритмов заранее встроенных, т.к. всем не угодишь.

chuvak2007f 04.07.2011 14:08

Ответ: Xors3D
 
Цитата:

Сообщение от NitE (Сообщение 194202)
Систему ЛОДов ручками. (Нет, не возможно, другие для этого используют уличную магию, которя тебе не доступна.)

Отрисовка невидимых объектов кажется не происходит, но если-б они и рисовались, ты-бы их не увидел, потому что они невидимые.

Про лоды спасибо узнал новое ) но гугл не особо щедр на такую инфу, есть ли блитз/ксорс примеры на эту тему?

Насчёт отрисовки, раньше кодил на блитз басике, и проводил такой тест, создавал кучу стандартных кубов в рядок, когда кубы уходили из поля видимости, фпс увеличивалась, а в камере доходило до 5-10 фпс, отрисовка продолжалась даже если стоишь за первым кубом, а все остальные за ним и в камере не светятся...
была такая идея чтобы перебирать в цикле все объекты падающие в камеру и те что были заслоняемые другими удалялись/скрывались и создавались когда обратно попадали.. но этот цикл был весьма удручающий )) и тут напрашивается вопрос есть ли более рациональное решение или такой же цикл но быстрее )) ?


Цитата:

Сообщение от Mr_F_ (Сообщение 194229)
свой двиг под конкретную цель
имхо

Учитывая мои скромные познания в области 3Д проще будет использовать готовые ксорсы чем тратить пол года - год на новый двиг, хотя может не всё так страшно )

Цитата:

Сообщение от Mr_F_ (Сообщение 194229)
автоматически уменьшать полигоны - это тупо, потому что автомат будет делать кривые сетки. реальные лоды должны делать люди, стараясь оставлять контуры со всех сторон максимально читаемыми, убирая полигоны во внутренних местах. тем не менее автоматическая технология такая вроде есть - progressive mesh, но там мутно это всё работает (и вообще только с .x), в ксорсе он не поддерживается.


будут конечно. хотя есть такая фишка: если объект рисуется, но он уже перекрыт другим объектом, то на перекрытые пиксели не считается пиксель шейдер. не знаю сортируется ли оно в ксорсе от передних к дальним, но это в принципе могло бы помочь. естественно это никак не уменьшает нагрузку на вертексы/трианглы - для полного отсекания перекрытых мешей в играх используют разные алгоритмы, например портальный рендеринг, окклюдеры (порталы наоборот), проверки загораживания через occlusion query (dx9+ only) - не уверен насчёт существования последнего в ксорсе, но оно в принципе лагучее - если у кого внезапно исчезали/появлялись куски сцены при быстром вращении камеры в дюке форевер - тот поймёт. окклюдеры и порталы, в общем, годное решение, (но только в случае, если твой левел похож на интерьеры) рекомендую глянуть как оно примерно устроено:
http://geck.bethsoft.com/index.php/Occlusion_Culling
для аутдор пространств такой подход не катит, собственно поэтому глупо требовать от разрабов ксорса всех этих алгоритмов заранее встроенных, т.к. всем не угодишь.

Цитата:

Сообщение от Mr_F_ (Сообщение 194229)
ксорс + блиц. для всяких быстрых тестов, небольших приложений, сцен тестов шейдеров - очень отличная связка. для казуалок, возможно, тоже отличный вариант.

а я то уже размечтался ) тогда понту от этого dx9 + блитз если возможностей 0...
портальный рендеринг, окклюдеры (порталы наоборот), проверки загораживания через occlusion query спасибо это то что надо!
пойду искать мануал по дх9 ))


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

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