XEffects - Reloaded - New Release (V 1.4)
-
- Posts: 1638
- Joined: Mon Apr 30, 2007 3:24 am
- Location: Montreal, CANADA
- Contact:
Re: XEffects - Reloaded - New Release (V 1.3)
Just copy the EffetCB.h that I've posted on this thread. It's corrected to work. Just try all the examples except example 1.
EDIT: Tryed it on an Intel Integrated card (Intel I5-4440) on Linux. The rendering is ok. But I hope, there are way to improve the performance. I got 7FPS with it enabled with 1 distant light. When it's disabled, I got 60FPS with the same scene.
EDIT: Tryed it on an Intel Integrated card (Intel I5-4440) on Linux. The rendering is ok. But I hope, there are way to improve the performance. I got 7FPS with it enabled with 1 distant light. When it's disabled, I got 60FPS with the same scene.
Re: XEffects - Reloaded - New Release (V 1.3)
I had a look at your file. You have removed the warnings generated by calls to the _OBSOLETED_ functions, but you are still passing the samplers as (float *). I can't see how that can work. Previously, with an nVidia card, I found this was possible, but lately (new GPU) it causes problems. I think you should change your code.
-
- Posts: 1638
- Joined: Mon Apr 30, 2007 3:24 am
- Location: Montreal, CANADA
- Contact:
Re: XEffects - Reloaded - New Release (V 1.3)
Thanks Mongoose7,
I'm simply used the new recommended function to set the constants, the shaders are untouched. It's using ID (int) now. I get the ID using this:
Here how it's used in EffectCB.h. Using this is faster (I got my terrain shader rendering faster using this), than the other method that was giving warning at compilation. But still, the performance is low.
I've tested this on NVidia (GTX780) and Intel (I5-4440). Rendering is ok, but the frame rate is low (Still plently playable on the NVidia, but run as a slideshow on the intel). (My directional light cover a lot of area so it light the view frustum).
If you see there, it has to cover 220000.0f * DEGTORAD to cover the view frustum. And that's the only light in the scene(sun). but most of objects are set as shadow casting (except trees)
Perhaps that technique can't be used with the Intel integrated cards, it's still ok and doesnt lag with my GTX780 (800Fps -> 120 fps), but this is a high requirement!
I'm simply used the new recommended function to set the constants, the shaders are untouched. It's using ID (int) now. I get the ID using this:
Code: Select all
services->getPixelShaderConstantID
Code: Select all
virtual void OnSetConstants(video::IMaterialRendererServices* services, s32 userData)
{
IVideoDriver* driver = services->getVideoDriver();
matrix4 worldViewProj = driver->getTransform(video::ETS_PROJECTION);
worldViewProj *= driver->getTransform(video::ETS_VIEW);
worldViewProj *= driver->getTransform(video::ETS_WORLD);
services->setVertexShaderConstant(services->getVertexShaderConstantID("mWorldViewProj"), worldViewProj.pointer(), 16);
worldViewProj = ProjLink;
worldViewProj *= ViewLink;
worldViewProj *= driver->getTransform(video::ETS_WORLD);
services->setVertexShaderConstant(services->getVertexShaderConstantID("mWorldViewProj2"), worldViewProj.pointer(), 16);
driver->getTransform(video::ETS_WORLD).getInverse(invWorld);
vector3df lightPosOS = LightLink;
invWorld.transformVect(lightPosOS);
services->setVertexShaderConstant(services->getVertexShaderConstantID("LightPos"), reinterpret_cast<f32*>(&lightPosOS.X), 4);
services->setVertexShaderConstant(services->getVertexShaderConstantID("MaxD"), reinterpret_cast<f32*>(&FarLink), 1);
services->setVertexShaderConstant(services->getVertexShaderConstantID("MAPRES"), &MapRes, 1);
services->setPixelShaderConstant(services->getPixelShaderConstantID("LightColour"), reinterpret_cast<f32*>(&LightColour.r), 4);
}
Code: Select all
effect->addShadowLight(SShadowLight(4096, vector3df(35, 480, -50), vector3df(0, 0, 0), SColor(255, 255, 255, 255), 20.0f, 5000.0f, 220000.0f * DEGTORAD, true));}
Perhaps that technique can't be used with the Intel integrated cards, it's still ok and doesnt lag with my GTX780 (800Fps -> 120 fps), but this is a high requirement!
Re: XEffects - Reloaded - New Release (V 1.3)
The problem is this code:
It should be, for all instances,
I have a GTX 660Ti and I have problems with the float cast.
Use of 22000*DEG_TO_RAD is a bit weird. All trig functions will map this back to [-PI, PI). (I don't use XEffects.)
Code: Select all
irr::f32 TexVar = 0;
services->setPixelShaderConstant(services->getPixelShaderConstantID("ColorMapSampler"), (const f32*)(&TexVar), 1);
Code: Select all
irr::s32 TexVar = 0;
services->setPixelShaderConstant(services->getPixelShaderConstantID("ColorMapSampler"), &TexVar, 1);
Use of 22000*DEG_TO_RAD is a bit weird. All trig functions will map this back to [-PI, PI). (I don't use XEffects.)
-
- Posts: 1638
- Joined: Mon Apr 30, 2007 3:24 am
- Location: Montreal, CANADA
- Contact:
Re: XEffects - Reloaded - New Release (V 1.3)
Thanks Mongoose7! I'll try this. I will also put a quality switch on the texture resolution, because currently the RTT is getting rendered in a 4K texture (4096x4096). On theses integrated card, it can surely kill the performance. I will try to set it to 512 or 256 (Not even sure the shadow will be visible at this rez, but at least, the FPS will go up on that kind of hardware). XEffect is really made for spotlights. Directional lights are there, but only minimally.
The "default" value is something like this: 90*DEG_TO_RAD that is ok for a spotlight.
EDIT: The resolution of the shadow map was taking the most FPS, after setting the resolution to 1024 instead of 4096, I got a "semi-playable" frame rate on the Intel chip. Was a 3FPS and now it got around 30FPS.
That the information I got to set the light angle. For spotlights, you enter the angle that is covered, but for a directional light, the parameter is used to get the light size. At 90, the light was a tiny light dot on the ground. Tweaked the value until I saw it cover the entire view with light. That one thing that should be changed. It look like everything was made for spotlights, then started added support for directional light, but stopped there. Feel like this part is incomplete.Use of 22000*DEG_TO_RAD is a bit weird. All trig functions will map this back to [-PI, PI). (I don't use XEffects.)
The "default" value is something like this: 90*DEG_TO_RAD that is ok for a spotlight.
EDIT: The resolution of the shadow map was taking the most FPS, after setting the resolution to 1024 instead of 4096, I got a "semi-playable" frame rate on the Intel chip. Was a 3FPS and now it got around 30FPS.
Last edited by christianclavet on Sun Feb 22, 2015 4:41 am, edited 1 time in total.
Re: XEffects - Reloaded - New Release (V 1.3)
OK. Yes, I think you are right, I don't think the shaders support directional lights. Have you tried putting your directional lights a long way from the scene? At a large distance, a spotlight looks like a directional light.
Looking at your code again, I see that you are passing the sampler as a float. Maybe this works on Nvidia. The original problem with XEffects was that TexVar was an integer that was cast to look like a float and this was where I had a problem.
Looking at your code again, I see that you are passing the sampler as a float. Maybe this works on Nvidia. The original problem with XEffects was that TexVar was an integer that was cast to look like a float and this was where I had a problem.
Re: XEffects - Reloaded - New Release (V 1.3)
Which version is most actual? Where to download it? It works with irrlicht 1.8.1?
Re: XEffects - Reloaded - New Release (V 1.3)
Hello! In OpenGL driver I get a screenshot as here: http://irrlicht.sourceforge.net/forum/v ... 35#p291489
I checked EffectCB.h, but it has TexVar type u32, so I can not understand what bug. Irrlicht SVN 1.9, the latest version (Trunk).
xEffects 1.3 (from the first post).
Help please!
I checked EffectCB.h, but it has TexVar type u32, so I can not understand what bug. Irrlicht SVN 1.9, the latest version (Trunk).
xEffects 1.3 (from the first post).
Help please!
Re: XEffects - Reloaded - New Release (V 1.3)
Help please!
Re: XEffects - Reloaded - New Release (V 1.3)
All the examples working correctly, but the first example gives the picture above.
Last edited by Harch on Sat May 16, 2015 7:27 pm, edited 1 time in total.
Re: XEffects - Reloaded - New Release (V 1.3)
I don't do xeffects, just pointing out I cannot see your picture. Perhaps others can't either.
Re: XEffects - Reloaded - New Release (V 1.3)
I realized that the shadows are disabled when using:
Somebody faced with?
Code: Select all
cube->getMaterial(0).MaterialType = video::EMT_TRANSPARENT_ALPHA_CHANNEL_REF;
Re: XEffects - Reloaded - New Release (V 1.3)
If you look in EffectHandler.cpp you will see that ALPHA_CHANNEL_REF is explicitly supported. Are you sure this is the cause? You know your scene is overbright? For testing, only use one light.