I got sucess with blur, but i can't do a simple invert color with sucess...
That's the fragment shader (i omit the variable declarations) ...
Code: Select all
void main(void)
{
vec4 color = texture2D(RT, vTexCoord.xy );
gl_FragColor= vec4(1-color.r,1-color.g, 1-color.b,color.a) ;
}
Code: Select all
gl_FragColor= vec4(color.r,color.g, color.b,color.a) ;
Code: Select all
gl_FragColor= vec4(2*color.r,3*color.g, 3*color.b,color.a) ;
Some hope?
PS: sorry my english
vertice shader
Code: Select all
varying vec2 vTexCoord;
void main(void)
{
vec2 Pos = sign(gl_Vertex.xy);
gl_Position = vec4(Pos.xy, 0, 1);
vTexCoord.x = 0.5 * (1.0 + Pos.x);
vTexCoord.y = 0.5 * (1.0 + Pos.y);
}
main.cpp
Code: Select all
#include <irrlicht.h>
using namespace irr;
using namespace core;
using namespace scene;
using namespace video;
using namespace io;
using namespace gui;
int main(int argc, char** argv)
{
IrrlichtDevice *device =
createDevice(video::EDT_OPENGL, dimension2d<s32>(640, 480), 32,
false, false, false, 0);
device->setWindowCaption(L"Post Processor Test");
IVideoDriver* driver = device->getVideoDriver();
ISceneManager* smgr = device->getSceneManager();
video::IGPUProgrammingServices* gpu = driver->getGPUProgrammingServices();
s32 mtlPost = video::EMT_SOLID;
if (gpu )
{
mtlPost = gpu->addHighLevelShaderMaterialFromFiles("../../media/post.vert", "main", video::EVST_VS_1_1,
"../../media/combine.frag", "main", video::EPST_PS_1_1,
NULL, video::EMT_TRANSPARENT_ALPHA_CHANNEL);
}
IAnimatedMesh* mesh = smgr->getMesh("../../media/sydney.md2");
IAnimatedMeshSceneNode* node = smgr->addAnimatedMeshSceneNode( mesh );
if (node)
{
node->setMaterialFlag(EMF_LIGHTING, false);
node->setMD2Animation(scene::EMAT_STAND);
node->setMaterialTexture( 0, driver->getTexture("../../media/sydney.bmp") );
//node->setMaterialType( (video::E_MATERIAL_TYPE)mtlToonShader);
}
smgr->addCameraSceneNode(0, vector3df(0,30,-40), vector3df(0,5,0));
ISceneNode* postProcessorNode = smgr->addCubeSceneNode(60.0);
ITexture* rt = driver->createRenderTargetTexture(dimension2d<s32>(512,512));
while(device->run())
{
driver->beginScene(true, true, 0);
driver->setRenderTarget(rt, true, true, video::SColor(255,100,101,140));
smgr->drawAll();
driver->setRenderTarget(0);
postProcessorNode->setVisible(true);
postProcessorNode->setMaterialTexture(0, rt);
postProcessorNode->setMaterialType((video::E_MATERIAL_TYPE) mtlPost);
postProcessorNode->render();
driver->endScene();
}
device->drop();
return 0;
}