GameDev.ru
/ GameDev.ru / Пользователи / Andrey / Сообщения на форуме пользователя Andrey (9 стр.)

Сообщения на форуме пользователя Andrey (9 стр.)

На чем лучше делать систему частиц? (GS vs. CPU)25 авг. 201211:07#80
Fantom09
> И не лень было дебажить? :)
4 секунды анализа exe файла :)
В общем странно что PointSprites оказались быстрее.
DrawIndexedPrimitive и VertexDeclaration24 авг. 201222:34#20
Anders333
>но к сожалению у меня в индекс буфере индексы могут быть от 0 до 100 000, что уже не влазит в 16 бит.
значит патчи ландшафта неправильно индексируешь.
На чем лучше делать систему частиц? (GS vs. CPU)24 авг. 201222:33#78
Fantom09
Запустил первое демо на ATI 6570 Geometry 631 FPS
Vertex не запустилось ошибка компиляции в шейдере.
У тебя
vec3 vNormal = normalize(  campos  - gl_Normal);
а нужно:
vec3 vNormal = normalize(  campos.xyz  - gl_Normal);
Во втором демо эта ошибка смотрю поправлена
Результаты второго демо:
Geometry 560
PointSprites 613
Vertex.exe 511

Temporal Antialiasing?24 авг. 201218:35#7
susageP
что-то слишком простое решение. пробовал и работает?
DrawIndexedPrimitive и VertexDeclaration24 авг. 201218:35#18
Anders333
> > Если обявляю unsigned short *indexes, то при прохождения порога в 65,535,
> > номер  индекса обнулается :(
Рисуй с 16 битными индексами но со смещением(BaseVertexIndex в DrawIndexedPrimitive)
DirectX9 HLSL - передача констант [решено]24 авг. 201218:33#6
innuendo
>кстати, знаешь, есть недокументированные функции Dx9 быстрой передачи констант ?
Их не существует. Как ты это представляешь? в какой dll они могут быть? в d3d9.dll и d3d8thk.dll нету ничего подобного, через драйвер напрямую передавать врядли получится.
DirectX9 HLSL - передача констант [решено]24 авг. 201217:15#4
innuendo
> для каких целей использовал эти ? :)
не использовал. просто так написал.
DirectX9 HLSL - передача констант [решено]24 авг. 201217:06#1
SoulSharer
IDirect3DDevice9::SetVertexShaderConstantF
IDirect3DDevice9::SetVertexShaderConstantI
IDirect3DDevice9::SetVertexShaderConstantB
В чем сложность темы?
Temporal Antialiasing?24 авг. 201216:54#5
susageP
А как его считать?susageP
> на GL так:
>
> gl_Position = ...
> gl_Position.xy += (вектор микросдвига)*gl_Position.w;
>как записать на DX9 не знаю.
как считать или откуда брать вектор микросдвига ?
На чем лучше делать систему частиц? (GS vs. CPU)23 авг. 201210:13#49
Fantom09
550 - Geometry
650 - Vertex
nVidia 210
Геометрические проиграли.
На чем лучше делать систему частиц? (GS vs. CPU)22 авг. 201215:31#42
Mr F
>две текстуры на каждый эмиттер, увеличенный пасс апдейта текстур. ну хз, наверное да, все равно быстрее чем цпу будет.
ну это нужно уже смотреть число чтений из VS текстуры против расчета на CPU.
> а если не с парой плоскостей коллизия, а с реальной геометрией левела? на цпу у нас могут лежать все треугольники, даже в какой-нибудь удобной структуре, там мы лучом можем в них >тыкать. как это на гпу засунуть?
Ну явно не средствами вершинных шейдеров. Тут только CUDA/ATI stream/OpenCL/DirectCompute средства связи с OpenGL/Direct3D там имеются, только вот эта реализация будет сложнее чем на CPU и вряд ли будет оправдана. Лучше добавить несколько плоскостей и аппроксимировать ими геометрию уровня, так уж точность врядли где понадобится.
PlayerDark
> у меня в движке теоретически есть возможность генерации своего вершинного
> шейдера для каждого набора аффекторов. Хотя пока я частицы вобще е тестировал.
Ну вот тебя может ждать несколько сюрпризов, будь готов что сложные эффекты c кучей параметров не так просто на GPU перенести.
Вообще мне кажется частицы нужно экспортить из 3DS Max,Maya писать в свой формат и интерполировать по кадрам, т.е. аналог скелетной/морфичной анимации.
Для артистов возможности создания эффектов ограничены только их фантазией, для программиста это сложная реализация, компромисс между расчетом CPU vs GPU, пропускная способность шины данных и т.д. да и редактор нужно иметь удобный, иначе все эти менеджеры частиц не нужны.
На чем лучше делать систему частиц? (GS vs. CPU)22 авг. 201214:14#39
Mr F
> а это кстати интересно, да. коллизия частиц может быть очень нужна, тут уже по
> ходу только на цпу всё считать? хотя коллизию с плоскостью и на гпу можно
> делать, но в каком месте хз, тут уже нужен другой подход.
На GPU от функции reflect(GLSL/Cg/HLSL) в вершинном шейдере нужно идти, но мы посчитаем направление, тут же с учетом этого возможно считается позиция.
Если на CPU то тормозить возможно будет.
На чем лучше делать систему частиц? (GS vs. CPU)22 авг. 201213:07#35
Mr F
Ну к примеру
- скалирование(изменение размера) - к примеру для дыма клубы вверху больше чем внизу;
- движение по спирали - в природе для листвы, когда она по спирали закручивается ветром;
- изменение цвета по какому-то закону тут много вариантов как Rqandom, так и чтение из текстуры так и шум перлина и т.д.;
- вращение частицы (по разным осям);
- можно и морфинг частицы придумать;
- отражение от каких-то плоскостей
- случайное изменение направления(для хаотичного движения)

Пока фантазия закончилась.

Такой набор аффекторов в основном для стратежек нужен или каких нибудь фантастических шутеров, там бывают сложные системы с очень зрелищными эффектами. В остальных к примеру шутерах наверное дым, огонь, взрыв, дождь.

На чем лучше делать систему частиц? (GS vs. CPU)22 авг. 201212:52#33
Mr F
> из аффекторов был вроде только линейный ветер в количестве одной штуки,
> захардкоденный в шейдер.
Ага вот это пожалуй минус такого подхода. Но тогда делаем свой шейдер для аффектора, думаю нормальное решение.

Следующие темы >>

2001—2012 © GameDev.ru — Разработка игр