Сообщения на форуме пользователя Andrey (146 стр.)
cameraViewDir, ..upDir, eyePos -> GL glRotatef... | 15 мар. 2007 | 15:53 | #3 |
---|
OAKmaden
gluLookAt находится вроде в glu32.dll которая лежит в стандартной поставке Windows. так что используй и не парься.
Windows NT/2000: Requires Windows NT 3.5 or later.
Windows 95/98: Requires Windows 95 or later. Available as a redistributable for Windows 95.
Header: Declared in Glu.h.
Library: Use Glu32.lib.
gluLookAt находится вроде в glu32.dll которая лежит в стандартной поставке Windows. так что используй и не парься.
Windows NT/2000: Requires Windows NT 3.5 or later.
Windows 95/98: Requires Windows 95 or later. Available as a redistributable for Windows 95.
Header: Declared in Glu.h.
Library: Use Glu32.lib.
рендеринг ландшафта. подскажите пути оптимизации. | 15 мар. 2007 | 14:17 | #118 |
---|
progman
даже не смотри в irrlicht.
там даже не создаются аппаратные буферы... вслучае Direct3D рендер идет через DrawIndexedPrimitiveUP в случае OpenGL даже не используется расширение GL_ARB_vertex_buffer_object это говорит об убогости рендера. Помню я запостил целый кусок кода по этому поводу вроде IronPeter офигел и сначала не поверил что это внутри irrlicht.
В Ogre пробелы между полигонами в демке terraine'а наблюдал при рендере через OpenGL.
даже не смотри в irrlicht.
там даже не создаются аппаратные буферы... вслучае Direct3D рендер идет через DrawIndexedPrimitiveUP в случае OpenGL даже не используется расширение GL_ARB_vertex_buffer_object это говорит об убогости рендера. Помню я запостил целый кусок кода по этому поводу вроде IronPeter офигел и сначала не поверил что это внутри irrlicht.
В Ogre пробелы между полигонами в демке terraine'а наблюдал при рендере через OpenGL.
Люди поможте с бампом! | 14 мар. 2007 | 12:58 | #7 |
---|
Dimka_2006
ну дак это уже пещерный век так реализовывать бамп...
ну дак это уже пещерный век так реализовывать бамп...
рендеринг ландшафта. подскажите пути оптимизации. | 13 мар. 2007 | 19:36 | #106 |
---|
ProstoyUser
>И, я так понимаю, что многие отказались от октри. Теперь квадтри юзаете?
никто от него не отказывался
>И, я так понимаю, что многие отказались от октри. Теперь квадтри юзаете?
никто от него не отказывался
Не работает Bloom эффект. | 13 мар. 2007 | 11:40 | #13 |
---|
Проблема решена... все таки дело то было в настройках техники эффекта!! надо было запостить шейдер...
а дело вот в чем для всех техник был отключен тест глубины, а вот в техники смешивания 2 текстур не был отключен...
вот про что имеется ввиду:
Спасибо всем кто откликнулся. Если что-то еще не так будет работать я подниму тему.
а дело вот в чем для всех техник был отключен тест глубины, а вот в техники смешивания 2 текстур не был отключен...
вот про что имеется ввиду:
technique Bloom { pass p0 { PixelShader = compile ps_1_4 Bloom(); Vertexshader = null; ZEnable = false; // Вот где была зарыта собака } } technique Bright { pass p0 { Vertexshader = null; PixelShader = compile ps_2_a BrightPassFilter(); ZEnable = false; } } technique Blur { pass p1 { VertexShader = compile vs_1_1 blurVS(); PixelShader = compile ps_2_a Blur(); ZEnable = false; } }
Правка: 13 мар. 2007 11:47
billboard - как сориентировать на камеру? | 13 мар. 2007 | 10:57 | #50 |
---|
progman
помнишь пост 8? а теперь посмотри на пост 44, там ты найдешь Up,Dir, Right вектора камеры....
попробуй разобраться в этих кусках кода и все должно заработать.
помнишь пост 8? а теперь посмотри на пост 44, там ты найдешь Up,Dir, Right вектора камеры....
попробуй разобраться в этих кусках кода и все должно заработать.
Не работает Bloom эффект. | 12 мар. 2007 | 20:27 | #10 |
---|
NULL_PTR
>а очистить цвет в данном месте выходит?
IDirect3DDevice9::Clear ?
если это то чистится в методе BeginRenderTarget
>дхдебаг молчит?
молчит конечно
>а очистить цвет в данном месте выходит?
IDirect3DDevice9::Clear ?
если это то чистится в методе BeginRenderTarget
>дхдебаг молчит?
молчит конечно
Не работает Bloom эффект. | 12 мар. 2007 | 20:26 | #9 |
---|
SoRRoW
>Ты знаешь, по виду final'а похоже, что ты рендеришь в текстуру, которую нельзя рендерить
да нет этот рендер таржет используется как финальный и почему нельзя,
если с остальными все ок, более они создаются с одинаковыми параметрами как и этот.
Usage верный,
>проверь выбранный режим мультисамплинга
D3DMULTISAMPLE_NONE == режиму при создании устройства Direct3D.
также с Depth Stencil форматом. он такой-же как и при создании устройства Direct3D.
>Ты знаешь, по виду final'а похоже, что ты рендеришь в текстуру, которую нельзя рендерить
да нет этот рендер таржет используется как финальный и почему нельзя,
если с остальными все ок, более они создаются с одинаковыми параметрами как и этот.
Usage верный,
>проверь выбранный режим мультисамплинга
D3DMULTISAMPLE_NONE == режиму при создании устройства Direct3D.
также с Depth Stencil форматом. он такой-же как и при создании устройства Direct3D.
billboard - как сориентировать на камеру? | 12 мар. 2007 | 20:19 | #42 |
---|
Не работает Bloom эффект. | 12 мар. 2007 | 20:17 | #6 |
---|
NULL_PTR
>а ты на экран вывел её?
издеваешься ;)
>а ты на экран вывел её?
издеваешься ;)
render->BeginScene(); render->BindTexture(FinalTexture); PPQuad->DrawSubset(0); render->EndScene();
Не работает Bloom эффект. | 12 мар. 2007 | 20:03 | #4 |
---|
NULL_PTR
>На финальной картинке один мусор, или это у меня с отрисовкой изображения проблемы?
Да нет это у все так. вот не пойму в чем дело :(
интеренсно то что я на каждом шаге сохранял текстуры прямо на диск ни одна текстура не портилась и верно приходит в шейдер...
но в финальном результате получается черти что
>На финальной картинке один мусор, или это у меня с отрисовкой изображения проблемы?
Да нет это у все так. вот не пойму в чем дело :(
интеренсно то что я на каждом шаге сохранял текстуры прямо на диск ни одна текстура не портилась и верно приходит в шейдер...
но в финальном результате получается черти что
Не работает Bloom эффект. | 12 мар. 2007 | 19:39 | #2 |
---|
Scart
>Во-первых, зачем скрины такого размера???
ну не стал заморачиватся обрезанием...
>Во-вторых, какое API? DirectX? Может текстура (Final) создается неправильно? Покажи как ее создаешь и как в нее рисуешь.
Direct3D.
Scart
Итак вот код:
ppEffect - это обертка над ID3DXEffect.
вот BeginRenderTarget:
Рендер в текстуру с отальными операциями сохранение и восстановления Depth Stencil, RenderTarget стандартен.
так представле класс RenderTarget:
класс рендер в текстуру:
Класс Texture ничего особенного не предствляет, внутри его наследника (Direct3DTexture) содержится IDirect3DTexture9 *.
Класс RenderTarget практически пустой интерфейс(ну там еще имя есть std::string).
Создаю рендер таржет так: Вот более подробно:
Думаю вусе понятно объяснил.
>Во-первых, зачем скрины такого размера???
ну не стал заморачиватся обрезанием...
>Во-вторых, какое API? DirectX? Может текстура (Final) создается неправильно? Покажи как ее создаешь и как в нее рисуешь.
Direct3D.
Scart
Итак вот код:
static const char *tBloom = "Bloom"; ppEffect->SetTechnique(tBloom); //Set dynamic shader variables ppEffect->SetTexture("srcTexture", BlurTexture); ppEffect->SetTexture("sceneTexture", SceneTexture); ppEffect->GetEffect()->CommitChanges(); render->BeginRenderTarget(Final); while(ppEffect->NextPass()) { //Render the Quad PPQuad->DrawSubset(0); } render->EndRenderTarget();
вот BeginRenderTarget:
// Начало рендеринга в RenderTarget void Direct3DRender::BeginRenderTarget(RenderTarget *renderTarget) const { ... // неважный для проблемы код renderToTexture = static_cast<RenderToTexture *>(renderTarget); #ifdef _DEBUG HRESULT hr = S_OK; hr = pDevice->GetRenderTarget(0, &static_cast<Direct3DRenderToTexture *>(renderToTexture)->oldRT); OutDirect3DError(hr); hr = pDevice->GetDepthStencilSurface(&static_cast<Direct3DRenderToTexture *>(renderToTexture)->oldDepthStencil); hr = pDevice->Clear(0, NULL, D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER, D3DCOLOR_XRGB(0,0,0), 1.0f, 0); hr = pDevice->BeginScene(); if (static_cast<Direct3DRenderToTexture *>(renderToTexture)->RT) { hr = pDevice->SetRenderTarget(0, static_cast<Direct3DRenderToTexture *>(renderToTexture)->RT); } hr = pDevice->SetDepthStencilSurface(static_cast<Direct3DRenderToTexture *>(renderToTexture)->depthStencil); ... #else .... #endif ... } // конец рендера рендеринга в RenderTarget void Direct3DRender::EndRenderTarget() const { if (!renderToTexture) { assert(renderToTexture && "NULL Pointer"); return; } #ifdef _DEBUG if (static_cast<Direct3DRenderToTexture *>(renderToTexture)->oldDepthStencil) { hr = pDevice->SetDepthStencilSurface(static_cast<Direct3DRenderToTexture *>(renderToTexture)->oldDepthStencil); static_cast<Direct3DRenderToTexture *>(renderToTexture)->oldDepthStencil->Release(); static_cast<Direct3DRenderToTexture *>(renderToTexture)->oldDepthStencil = NULL; } // восстановление render target'а if (static_cast<Direct3DRenderToTexture *>(renderToTexture)->oldRT) { hr = pDevice->SetRenderTarget(0, static_cast<Direct3DRenderToTexture *>(renderToTexture)->oldRT); static_cast<Direct3DRenderToTexture *>(renderToTexture)->oldRT->Release(); static_cast<Direct3DRenderToTexture *>(renderToTexture)->oldRT = NULL; } hr = pDevice->SetRenderState(D3DRS_ZWRITEENABLE, true); OutDirect3DError(hr); hr = pDevice->EndScene(); #else ... #endif renderToTexture = NULL; } |
так представле класс RenderTarget:
class Direct3DRenderToTexture : public RenderToTexture { public: // render target IDirect3DSurface9 *RT; // старый render target IDirect3DSurface9 *oldRT; // depth stencil IDirect3DSurface9 *depthStencil; // стрый depth stencil IDirect3DSurface9* oldDepthStencil; Direct3DRenderToTexture(); virtual ~Direct3DRenderToTexture(); };
class RenderToTexture : public RenderTarget { private: // результирующая текстура std::auto_ptr<Texture> texture; public: ... }
Класс RenderTarget практически пустой интерфейс(ну там еще имя есть std::string).
Создаю рендер таржет так: Вот более подробно:
// создание рендера в текстуру void Direct3DRender::CreateRenderToTexture(RenderToTexture *&rToTexture, unsigned int width, unsigned int height, int format) const { static D3DFORMAT formats[] = { D3DFMT_A8R8G8B8, D3DFMT_R32F }; assert(format <= Render::PIXEL_FORMAT_FLOAT32 && "Out Of Range"); if (rToTexture) { DeleteRenderToTexture(rToTexture); } rToTexture = new Direct3DRenderToTexture; Texture *texture = new Direct3DTexture; rToTexture->SetTexture(texture); IDirect3DTexture9 *d3dt9 = NULL; HRESULT hr = pDevice->CreateTexture(width, height, 1, D3DUSAGE_RENDERTARGET, formats[format], D3DPOOL_DEFAULT, &d3dt9, NULL); OutDirect3DError(hr); texture->SetWidth(width); texture->SetHeight(height); static_cast<Direct3DTexture *>(texture)->SetTexture(d3dt9); hr = d3dt9->GetSurfaceLevel(0, &static_cast<Direct3DRenderToTexture *>(rToTexture)->RT); OutDirect3DError(hr); hr = pDevice->CreateDepthStencilSurface(currentMode.GetWidth(), currentMode.GetHeight(), depthStencilformat, multiSampleType, 0, TRUE, &static_cast<Direct3DRenderToTexture *>(rToTexture)->depthStencil, NULL); renderTargets.push_back(pRenderTarget(static_cast<RenderTarget *>(rToTexture))); } |
Архитектура движка | 12 мар. 2007 | 18:38 | #6 |
---|
Scart
Мощно...
Мощно...
Не работает Bloom эффект. | 12 мар. 2007 | 18:06 | #0 |
---|
Привет!! всем.
Поиск ничего не дал.
Делаю так:
1) Рендер сцены в текстуру.
2) Применяю эффект BrightPass к этой текстуре и сохраняю это в текстуре BrightTexture;
3) Применяю эффект Blur к этой текстуре и сохраняю результат в BlurTexture;
4) Финальный рендеринг(для теста тоже в текстуру) смешиваю цвет текстуры сцены и BlurTexture и сохраняю результат в FinalTexture;
5) Рендерю Квадрат с текстурой FinalTexture;
вот что получается:
Сцена:
BrightPass:
Blur:
Final:
Почему не работает смешивание? то что текстуры приходят верные проверял сам сохраняя их перед/после каждого прохода.
Что еще нужно запостить для решения проблемы шейдер, код?
Поиск ничего не дал.
Делаю так:
1) Рендер сцены в текстуру.
2) Применяю эффект BrightPass к этой текстуре и сохраняю это в текстуре BrightTexture;
3) Применяю эффект Blur к этой текстуре и сохраняю результат в BlurTexture;
4) Финальный рендеринг(для теста тоже в текстуру) смешиваю цвет текстуры сцены и BlurTexture и сохраняю результат в FinalTexture;
5) Рендерю Квадрат с текстурой FinalTexture;
вот что получается:
Сцена:
BrightPass:
Blur:
Final:
Почему не работает смешивание? то что текстуры приходят верные проверял сам сохраняя их перед/после каждого прохода.
Что еще нужно запостить для решения проблемы шейдер, код?
Правка: 13 мар. 2007 11:47
Мнение о DoomIII | 12 мар. 2007 | 13:39 | #114 |
---|
Злющий дядька
>И вообще, я забыл что сижу на очередной скучнейшей паре, где рассказывают про азы MSSQL, и полностью погрузился в игру.. :)
да БД это такая скукотища...
>И вообще, я забыл что сижу на очередной скучнейшей паре, где рассказывают про азы MSSQL, и полностью погрузился в игру.. :)
да БД это такая скукотища...