Post Your Irrlicht Screenshots / Render Here.
Re: Post Your Irrlicht Screenshots / Render Here.
Started on IK for my animation system.
Implemented CCD (Cyclic Coordinate Descent):
http://youtu.be/V4qO_CcbIYU
http://youtu.be/CjPxA2vuhVg
Edit:
http://youtu.be/xinNK498OxA
Implemented CCD (Cyclic Coordinate Descent):
http://youtu.be/V4qO_CcbIYU
http://youtu.be/CjPxA2vuhVg
Edit:
http://youtu.be/xinNK498OxA
-
- Posts: 91
- Joined: Mon Mar 05, 2012 4:51 pm
- Location: Bristol, UK
- Contact:
Re: Post Your Irrlicht Screenshots / Render Here.
Very nice! That is amazing!wing64 wrote:ARSA Framework - Sponza Rendering
RenderTexture: 1920x1080, ShadowMap: 512 (2 split), SSAO: 512, FXAA
FPS:31, Triangles 837,537
CPU: i7-930, Redon4670
final:
...
Re: Post Your Irrlicht Screenshots / Render Here.
Untuned rectilinear shadow map vs traditional shadow map. Both 512x512. Guess which is which.
Re: Post Your Irrlicht Screenshots / Render Here.
I tell you what you should do..
While PSSM promises the best pixel usage/coverage
You should use CSM because you can make the ShadowMaps clamp to world coordinates and jump across instead of moving smoothly (which is better for temporal aliasing, less pixel swimming as you move the camera)
Then, you should also use VSM or something like that for smooth shadows, maybe it can be enough to hide PSSM swimming artifacts (unless you can clamp separate splits' pixels to world coordinates)
Finally your frustum splits should be split at logarithmic boundaries
where spltID starts counting at 0 like an index
THIS IS REALLY THE BEST SPLIT SCHEME GIVING BEST SAMPLING RAITOS
If using deferred rendering, or at least occlusion queries with a depth pass... you can know the expected maximum and minimum expected depths of all pixels within the image
You need to pingpong the depth attachment of the render target minimizing each time by performing the max() and min() functions on groups of pixels (maybe 4x4, shrink by factor of 4 each time)
Obviously ignore the "background" pixel depths, i.e. whatever the depth gets cleared to
Then you can get a LOT BETTER COVERAGE
because usually if you split logarithmically, none of the pixels on the screen will use the first split Shadow Map
THEN if you want even more quality... Trapezoid Shadow Maps (improvement upon Perspective Shadow Maps which provide more detail near the camera), then you can stretch the shadowmap in a way that will give you more pixels near the viewer.
After performing all of the 4 above, you're at Crysis Quality shadowmapping
P.S. if you want performance, use geometry shaders and MRTs to draw to all splits of the ShadowMaps at once (4 splits should almost always be enough, and most of the time 4 is excessive)
While PSSM promises the best pixel usage/coverage
You should use CSM because you can make the ShadowMaps clamp to world coordinates and jump across instead of moving smoothly (which is better for temporal aliasing, less pixel swimming as you move the camera)
Then, you should also use VSM or something like that for smooth shadows, maybe it can be enough to hide PSSM swimming artifacts (unless you can clamp separate splits' pixels to world coordinates)
Finally your frustum splits should be split at logarithmic boundaries
Code: Select all
splitNearDistance = pow(fullFrustumNearDist,1.0-float(splitID)/numOfSplits)*pow(fullFrustumFarDist,float(splitID)/numOfSplits);
splitFarDistance = pow(fullFrustumNearDist,1.0-float(splitID+1)/numOfSplits)*pow(fullFrustumFarDist,float(splitID+1)/numOfSplits);
THIS IS REALLY THE BEST SPLIT SCHEME GIVING BEST SAMPLING RAITOS
If using deferred rendering, or at least occlusion queries with a depth pass... you can know the expected maximum and minimum expected depths of all pixels within the image
You need to pingpong the depth attachment of the render target minimizing each time by performing the max() and min() functions on groups of pixels (maybe 4x4, shrink by factor of 4 each time)
Obviously ignore the "background" pixel depths, i.e. whatever the depth gets cleared to
Then you can get a LOT BETTER COVERAGE
Code: Select all
splitNearDistance = pow(minDetectedDist,1.0-float(splitID)/numOfSplits)*pow(maxDetectedDist,float(splitID)/numOfSplits);
splitFarDistance = pow(minDetectedDist,1.0-float(splitID+1)/numOfSplits)*pow(maxDetectedDist,float(splitID+1)/numOfSplits);
THEN if you want even more quality... Trapezoid Shadow Maps (improvement upon Perspective Shadow Maps which provide more detail near the camera), then you can stretch the shadowmap in a way that will give you more pixels near the viewer.
After performing all of the 4 above, you're at Crysis Quality shadowmapping
P.S. if you want performance, use geometry shaders and MRTs to draw to all splits of the ShadowMaps at once (4 splits should almost always be enough, and most of the time 4 is excessive)
Re: Post Your Irrlicht Screenshots / Render Here.
This is funny You should look up the term before comparing other techniques.
Rectilinear shadow maps are far superior to all the ones you mentioned. It's a newer technique (2012) that creates a single shadow map. No splits. No geometry shaders. No perspective aliasing. No multiple rendering.
It is faster than CSM while having better quality. It does not need splits or multiple maps. It's much simpler, which is simply great when it's also faster and better quality (Note: my picture is untuned as mentioned. See the paper for a proper comparison.)
Rectilinear shadow maps are far superior to all the ones you mentioned. It's a newer technique (2012) that creates a single shadow map. No splits. No geometry shaders. No perspective aliasing. No multiple rendering.
It is faster than CSM while having better quality. It does not need splits or multiple maps. It's much simpler, which is simply great when it's also faster and better quality (Note: my picture is untuned as mentioned. See the paper for a proper comparison.)
Re: Post Your Irrlicht Screenshots / Render Here.
I would dispute the claim of better quality than CSM
sure, its clever but the distortion introduces the need for tesellation and basically gives you the same issues as using non-linear transform shadowmaps for point lights in deferred rendering (Dual Paraboloid or Spheremap)
plus if you really claim rectilinear is superior... why not swap Light Perspective Shadow Mapping for Rectilinear Shadowmapping as your method of perspective adjustment
sure, its clever but the distortion introduces the need for tesellation and basically gives you the same issues as using non-linear transform shadowmaps for point lights in deferred rendering (Dual Paraboloid or Spheremap)
plus if you really claim rectilinear is superior... why not swap Light Perspective Shadow Mapping for Rectilinear Shadowmapping as your method of perspective adjustment
Re: Post Your Irrlicht Screenshots / Render Here.
While it does need somewhat tesselated data (no huge triangles), it works fine without dynamic tesselation - the minor errors aren't that noticable once the shadow is softened. For the particular errors of paraboloid (the infinity/singularity), those don't appear.sure, its clever but the distortion introduces the need for tesellation and basically gives you the same issues as using non-linear transform shadowmaps for point lights in deferred rendering (Dual Paraboloid or Spheremap)
It seems like a step down to me. While also a type of warping, it leaves it at a perspective setting, while rectilinear allows any number of importance parameters, starting from only covering visible pixels.plus if you really claim rectilinear is superior... why not swap Light Perspective Shadow Mapping for Rectilinear Shadowmapping as your method of perspective adjustment
Re: Post Your Irrlicht Screenshots / Render Here.
I knew something was wrong with rectilinear shadowmapping
it took a while to get.... all soft-shadow techniques will fail or be terribly hard to implement due to random size changes and you will get really bad non-uniform size penumbra as well as the penumbra will be blurred in really weird skewed elipses
it took a while to get.... all soft-shadow techniques will fail or be terribly hard to implement due to random size changes and you will get really bad non-uniform size penumbra as well as the penumbra will be blurred in really weird skewed elipses
Re: Post Your Irrlicht Screenshots / Render Here.
Huh? What are you talking about? Soft shadows are completely separate, RT only does hard shadows. Penumbra width depends on your soft shadow tech.
You are correct that percentage closer filtering and its derivatives wouldn't work well with the changing texel sizes, but there are many other soft shadow techniques.
You are correct that percentage closer filtering and its derivatives wouldn't work well with the changing texel sizes, but there are many other soft shadow techniques.
Re: Post Your Irrlicht Screenshots / Render Here.
Spamming the forum with lots of hi-res pictures, and no, no idea why
irrRenderer 1.0
Height2Normal v. 2.1 - convert height maps to normal maps
Step back! I have a void pointer, and I'm not afraid to use it!
Height2Normal v. 2.1 - convert height maps to normal maps
Step back! I have a void pointer, and I'm not afraid to use it!
-
- Competition winner
- Posts: 688
- Joined: Mon Sep 10, 2012 8:51 am
Re: Post Your Irrlicht Screenshots / Render Here.
Oo! Oo! I can add to that! I see white-edged boxes! XP
Re: Post Your Irrlicht Screenshots / Render Here.
white-edged are my favorite kind of boxes
irrRenderer 1.0
Height2Normal v. 2.1 - convert height maps to normal maps
Step back! I have a void pointer, and I'm not afraid to use it!
Height2Normal v. 2.1 - convert height maps to normal maps
Step back! I have a void pointer, and I'm not afraid to use it!
Re: Post Your Irrlicht Screenshots / Render Here.
I quite like the bloom on top of the blue lines. It gives a tron-like feel. Now if they only were AA'd.