70 likes | 216 Views
This technology splits models into patches and calculates diffuse lighting by integrating light emitted between patches. The method pseudocode involves drawing scenes with shadows and ray tracing to determine new light sources, resulting in final images. Monte-Carlo rays can be used with single or multiple rays per child light, with the process taking around 9-10 seconds per frame. Common problems include working with shadows and cleaning up z-fighting noise. Potential improvements include generating new lights based on shadow-map data and using paraboloid shadow-maps. Further enhancements can involve utilizing non-floating-point pbuffers and the EXT_framebuffer extension. Various challenges and optimization possibilities are discussed for achieving advanced radiosity effects in computer graphics.
E N D
Traditional Radiosity Instant Radiosity • Splits model up into patches • Calculates diffuse lighting on scene by integrating light emitted by every patch onto every other patch. • Only as good as how many patches you use. • Starts with a hardware light and renders scene with shadows. • Ray traces model from light and calculates new light points same color as surface intersected. • Only as good as how many lights and bounces you use.
Pseudo Code • Draw the scene with shadows. • Ray trace the scene to determine the appropriate number of new child light sources. • Each is attenuated by the surface color and light absorption information. • Draw scene with shadows from each child light. • Repeat step 2 using child light to generate further lights. • Combine all images together for final result.
Monte-Carlo Rays Single ray spawned per child light Multiple rays spawned per child light
Actual Images Actual Image of Modeled Scene Single Ray Monte-Carlo Multiple Rays Monte-Carlo Time For 1 Frame 9 seconds 10 seconds [~200 lights] [~800 lights]
Problems • Shadows, shadows, shadows • Getting working initially. • Getting to work with desired field-of-view. • Cleaning up z-fighting noise. • Getting to work in GLSL. • Determining proper blending of individual scenes. • Ray tracing the image properly. • Hopes dashed for one of my optimizations. • Render individual images to pbuffers. • Not enough pbuffer space. • Not enough texture units. PITN PITN
Improvements that can still be made • Generating new lights based on shadow-map information. • Still have to take each face of cube map into account. • Use a paraboloid shadow-map. • Use non floating-point pbuffers when rendering. • Use EXT_framebuffer extension when it’s created.
Questions ??? Questions ???