What I’d like to propose is to introduce a new render target kind to OpenGL: Irregular (instead of Rectangular) Render Targets.
This would especially be appreciated when using rendering methods like the one described here:
With this new render target we would finally be able to render Shadows of Shadow Volumes quality at the cost of Shadow Maps (slightly higher, but not really much). Such kind of render target, which would not be regularly sampled, but the ‘pixels’ would be placed right in the places, where they are required, means no more over- or under-sampling as it’s common for any other existing Shadow Mapping methods.
I can imagine how difficult it might seem for graphics cards developers to implement this kind of feature on their boards, but I’m definitely sure this would be worth an effort.
Here, in my opinion, it’s not a question whether it’s good or bad idea, but whether the biggest corporations are willing to put thier effort into this topic.
I’d like to add few words on Irregular Render Targets implementation on hardware.
In the original paper linked above, the authors have suggested using grid of lists, which is something I don’t like most. I was more thinking of grid of KD-trees, which in most (realistic) cases works almost same fast as grid of lists, but in those critical cases pushes the average cost a lot down.
BTW. Average cost of finding all points contained in given triangle (all in 2d space) using KD-tree is: ~(sqrt(n) + k), where:
n - number of points in KD-Tree (in our case equals pixels count, e.g.: 1024x768)
k - number of found vertices
Using Voronoi Diagrams it would most probably be even less. If I’m right: ~(logn + k), where logn less than 22 currently (2^22 = 2048x2048, anyone requests such screen resolution nowadays?). It would be nice to let OpenGL coder distinguish which method he/she prefers simply by setting some parameter, for example: GL_IRREGULAR_TEXTURE_STORE_METHOD.
Not to mention that with Irregular Render Targets besides directional and point lights (using tetrahedrons maybe; instead of cubes), we would be able to simulate:
- shadows by (multiple) transparent surfaces (cummulated)
- high quality soft shadows
- pixel-accurate point reflections (like cube maps do, but accurately)
Waiting for discussion, comments and willing more people to interest with Irregular Render Targets topic
ps. I know well of “Suggestions for the next release of OpenGL” discussion forum, but I also know not may visit it, so I posted it here hoping for more response