Talk:Hidden surface determination

From Wikipedia, the free encyclopedia

This article is within the scope of WikiProject Computer science, which aims to create a comprehensive computer science reference for Wikipedia. Visit the project page for more information and to join in on related discussions.
Start rated as start-Class on the assessment scale
Mid rated as mid-importance on the assessment scale

Contents

[edit] Missing Info

I would like to see the history. When did this first come into play? There is no mention of this. Raytracing: Simlation a nuclear reactor. Very old. (1960?) Google throug wiki!

[edit] More information

I found this article to be pointless without the algorithms that explains the process. As a beginner 3D programmer who want to make use of the article to find out the basics so I could start coding this article is useless... Hence I will now commit myself to write a 3D programming series of article. Lord Metroid 12:57, 7 November 2006 (UTC)

[edit] Rewrite

I rewrote this article so it was more encylopedic. I removed the explanations of the algorithms since most of what was there could be found in other articles (for example, viewing frustum culling and z-buffering). – flamuraiTM 09:12, Jan 29, 2005 (UTC)

[edit] restructure?

I've tried to split this into the broad stages of a rendering pipeline; and remove the stuff about different HSR embedded there. I wanted one clear place listing the various HSR algorithms, with a mind to later including more detail on the comparison issues. (i thought this after sticking 'scanline vs zbuffer' in the scanline article)

Walter bz 12:17, 31 January 2007 (UTC)

[edit] commented out piece moved out of article

Please don't do this again: such texts must be seen, for re-use. BTW, who was sorry here? Signature, please. `'mikka 20:31, 5 February 2007 (UTC)

<-- Sorry: I think this article flows better if this heirachical Z/BVH stuff mentioned bellow is moved to a seperate section on that specific algorithm

Occlusion culling 
Occlusion culling is the process of determining which portions of objects are hidden by other objects from a given viewpoint. This is one of the fundamental problems in computer graphics, and many different occlusion culling algorithms have been developed. The simplest is painter's algorithm, in which polygons are sorted, then drawn back to front. The most common in real-time computer graphics is z-buffering, in which the depth value at each pixel is stored as each polygon is rendered. The pixel is only overwritten if the depth value of the current point is less than the depth value stored in the z-buffer. Both of these methods operate on polygon meshes. Bounding Volume Hierarchies (BVHs) can be used to traverse complex scenes front to back and a hierarchical z-buffer can be used to reject large nodes of the BVH. To reduce fillrate in this case, large nodes are rendered adaptively at lower resolution so that they cover about 8 pixels (in their level of the hierarchy). Parallelism for multiple GPUs (possible on multiple graphic cards) is achieved by traversing the tree at different parts of the screen (needs some managing algorithms) at the same time. The latency of the lookup in the z-buffer and BVH and the deep pipelining architecture of modern computers still leads to some overdraw: The GPU traverses the BVH without waiting for the z-buffer comparison and sometimes needs to cancel large subtrees. Coherence between consecutive frames can be used to cache different parts of the scene on different graphic cards and to reorder the BVH in memory in the way it was accessed in the last frame. Shadow casting is achieved by repeating this process for every light source. Aborting BVH traversal when the box gets smaller then one pixel leads to level of detail, but this has to be synced between the rendering and the shadow casting to avoid jaggy shadows.
Contribution culling 
Often, objects are so far away that they do not contribute significantly to the final image. These objects are thrown away if their screen projection is too small.

-->

Portal_rendering got its own article Arnero 17:18, 7 February 2007 (UTC)


[edit] New structure proposal

distinguish
        part of surface
                complete surface = culling
        LOD
                limiting viewing distance => viewing frustrum (not pyramid)
                contribution culling
visibility problem
        the rest
complete solution
        ray-tracer ( [[Wolfenstein 3d]] )
                rounding errors lead to wobble of individual pixels
        +
                view pyramid clipping
                        note that
                                or
                                        with a pyramid at least two planes must be culled in 3d
                                                after clipping all objects end up on the sceen, no overflow is possible
                                                        but the tip of the pyramid leads to division by zero
                                                                Solutution
                                                                        ignore surface where the camera sticks in
                                        clip in screen space and additionally clip z-range to cull objects behind the camera
                                        => viewing frustrum
                one of these
                        z-buffer ([[strike commander]])
                                (outer loop: triangle, inner loop: pixel)
                        scanline algo
                                (outer loop: triangle, inner loop: pixel)
                rounding errors lead to wobbling of the vertices of triangles
                        especially visible if textured
optimization
        cheap
                backface culling
                        or using a different texture for both sides                             
        trading speed for acuracy
                painter ([[Playstation]])
                        for high detail, soft surface in conjuction with backface culling
                zbuffer 
                        agressive rounding, before writing the values into the buffer
                        delete objects close to the viewer
                                note that this allow one to clip all other objects in screen space
        for indoor scenes
                regular grid ([[Wolfenstein3d]])                                        
                portal-renderer ([[Duke Nukem 3d]],[[Descent]])
                        reuse viewing frustrum code
        for scenes with more than 100 triangles
                sophisticated datastructures
                        goal
                                like in [[sort]] " n*log(n) " is possible
                        examples
                                hirachical bounding volumes
                                        BSP ([[DOOM]])
                                        bounding boxes
                                        bounding spheres
                                in screen space
                                        active edge list
                                        c-buffer                                                        
                                        hirachical z-buffer ( [[ATI]] )
parallel processing
        rendering pipeline
        CPU
        GPU
Outlook
        rendering equation
Comparison
        complex shaders much more expensive
        defered rendering

Arnero 20:43, 24 March 2007 (UTC)

[edit] Low quality.

I think this article needs to be cleaned up to use proper English grammar. Major portions of it were pretty obviously written by a non-native English speaker. This is not a personal attack, just a suggestion. -DT —The preceding unsigned comment was added by 64.20.237.230 (talk) 22:32, 30 April 2007 (UTC).