here is a better example of the HDR that i made:


is it good enough to use though? does the bloom effect look good enough?

Code: Select all
/****************************************************
hdrEffect with CG
By Emil Halim
****************************************************/
#include <MagicIncludes.h>
// global declration of Irrlicht interfaces
IrrlichtDevice* device;
IVideoDriver* driver;
ISceneManager* smgr;
bool ProgramRun;
int main()
{
device = createDevice(EDT_OPENGL, dimension2d<s32>(640, 480), 32);
bool rslt = InitMagic(device);
if(rslt == false)
printf("Magic Library will only work with OpenGL driver");
driver = device->getVideoDriver();
smgr = device->getSceneManager();
TCGShader* cgProg = new TCGShader;
cgProg->AddToPixelProgram("void main( float2 TexCoord0 : TEXCOORD0, ");
cgProg->AddToPixelProgram(" out float4 color : COLOR, ");
cgProg->AddToPixelProgram(" uniform sampler2D txtr0) ");
cgProg->AddToPixelProgram("{ ");
cgProg->AddToPixelProgram(" float2 v = float2(0.0,0.005); ");
cgProg->AddToPixelProgram(" float2 u = float2(0.005,0.0); ");
cgProg->AddToPixelProgram(" float2 uv = float2(0.005,0.005); ");
cgProg->AddToPixelProgram(" float2 uv1 = float2(0.005,-0.005); ");
cgProg->AddToPixelProgram(" float4 Col1 = tex2D(txtr0,TexCoord0+u); ");
cgProg->AddToPixelProgram(" float4 Col2 = tex2D(txtr0,TexCoord0-u); ");
cgProg->AddToPixelProgram(" float4 Col3 = tex2D(txtr0,TexCoord0+v); ");
cgProg->AddToPixelProgram(" float4 Col4 = tex2D(txtr0,TexCoord0-v); ");
cgProg->AddToPixelProgram(" float4 Col5 = tex2D(txtr0,TexCoord0+uv); ");
cgProg->AddToPixelProgram(" float4 Col6 = tex2D(txtr0,TexCoord0-uv); ");
cgProg->AddToPixelProgram(" float4 Col7 = tex2D(txtr0,TexCoord0+uv1); ");
cgProg->AddToPixelProgram(" float4 Col8 = tex2D(txtr0,TexCoord0-uv1); ");
cgProg->AddToPixelProgram(" float4 drkCol1 = Col1 * Col1 ; ");
cgProg->AddToPixelProgram(" float4 drkCol2 = Col2 * Col2 ; ");
cgProg->AddToPixelProgram(" float4 drkCol3 = Col3 * Col3 ; ");
cgProg->AddToPixelProgram(" float4 drkCol4 = Col4 * Col4 ; ");
cgProg->AddToPixelProgram(" float4 drkCol5 = Col5 * Col5 ; ");
cgProg->AddToPixelProgram(" float4 drkCol6 = Col6 * Col6 ; ");
cgProg->AddToPixelProgram(" float4 drkCol7 = Col7 * Col7 ; ");
cgProg->AddToPixelProgram(" float4 drkCol8 = Col8 * Col8 ; ");
cgProg->AddToPixelProgram(" float4 avrCol1 = drkCol1 + drkCol2 + drkCol3 + drkCol4; ");
cgProg->AddToPixelProgram(" float4 avrCol2 = drkCol5 + drkCol6 + drkCol7 + drkCol8; ");
cgProg->AddToPixelProgram(" float4 avrCol = (avrCol1 + avrCol2) / 8.0; ");
cgProg->AddToPixelProgram(" float4 oCol = tex2D(txtr0, TexCoord0); ");
cgProg->AddToPixelProgram(" color = oCol + avrCol * 0.35 ; ");
cgProg->AddToPixelProgram("} ");
cgProg->setPixelProfile(CG_PROFILE_ARBFP1);
cgProg->CompilePixelProgram("main");
printf("%s \n", cgProg->GetCompiledPixelProgram());
SMaterial img;
img.Texture1 = driver->getTexture("../../MagicLibrary/media/hdrtest.bmp");
ProgramRun = true;
int lastFPS = -1;
while(device->run()&& ProgramRun)
{
driver->beginScene(true, true, SColor(0,0,0,0));
if(KeyDown(KEY_ESCAPE))ProgramRun=false;
ViewOrtho();
SetBlend(MASKBLEND);
driver->setMaterial(img);
DrawImage(img,180,240);
cgProg->StartShaderProgram();
driver->setMaterial(img);
DrawImage(img,480,240);
cgProg->StopShaderProgram();
ViewPerspective();
smgr->drawAll();
driver->endScene();
int fps = driver->getFPS();
if (lastFPS != fps)
{
wchar_t tmp[1024];
swprintf(tmp, 1024, L"Glow effect with CG (%s)(fps:%d)",driver->getName(), fps);
device->setWindowCaption(tmp);
lastFPS = fps;
}
}
device->drop();
return 0;
}