Jump to content
  • Advertisement


  • Content Count

  • Joined

  • Last visited

Community Reputation

110 Neutral

About IcyTower

  • Rank

Personal Information

  • Role
  • Interests


  • Github

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

  1. Hey, the book you wrote on OpenGL was the first graphics book I read I'm doing a very similar thing, but in ray tracing. I also separated shadow blurring from dist-to-occluder spreading/blurring. My textures look very similar to yours. I also tried to combine it with Shadow Mapping, but there is one problem that is not fixable. Shadow Maps store only the closest-to-light occluder, thus having proper hard shadows from object partially shadowed by other objects is impossible. In raytracing that is not a poblem - we can get distance to the closest-to-surface occluder. But there is still one serious problem with such processing - some regions are covered in hard and soft shadows at the same time, which requires storing multiple values of dist-to-occluder and multiple shadow values per pixel (as those shadows hide under each other before blurring, but should be visible after blurring). When you process hard/soft shadows separately it obviously also helps with shadow bending/bubbles etc where they intersect. But a bunch of problems arise as well with combining them
  2. The aim of this project is to create a renderer which almost matches Path Tracing in quality, while generating noiseless images hundreds times faster. Instead of tracing thousands of rays per pixel to get soft shadows and diffuse reflections, it traces a single ray per pixel and uses smart blur techniques in screen space. It also uses standard Deferred Rendering for rasterizing main image. One of the project's fundamental rules is that everything is dynamic (no pre-baked data). Current implementation of ray tracing is very slow, with significant fixed cost per object. Performance will be dramatically improved after switching graphics API to DirectX12. The switch is needed to randomly access meshes from within the shader, rather than processing one by one as it is now. Despite that, image processing of shadows and reflections/refractions is pretty fast, which allows for real-time operation in small/medium sized scenes. I'm certain that most operations could be speed-up 2-10x if some more work was put into it. In development since 2014, 1500+ hours of work. Differences from NVIDIA RTX demos (such as SVGF - Spatiotemporal Variance-Guided Filtering): - engine doesn't shoot rays in random directions, but rather offsets them slightly based on pixel position in image-space. This results in zero temporal noise. - engine traces rays one layer (bounce) at a time and then stores results in render targets, which allows blurring of each light bounce separately. NVIDIA traces all bounces at once and then blurs the result. - engine doesn't use temporal accumulation of samples, although it could be added for extra quality. - NVIDIA demos analyze noise patterns to deduce how much blur needs to be applied at given screen region, I deduce this information from distance to the nearest occluder (for shadows) or nearest reflected/refracted object. It gives temporally stable results and saves some processing time (couple of ms per frame for NVIDIA), but introduces own set of challenges. Working features: • Deferred Rendering • Light reflections/refractions · Locally correct   · Fully dynamic   · Diffuse - for rough surfaces   · Multiple refractions/reflections   · Blur level depanding on surface to object distance • Shadows   · Fully dynamic   · Soft - depanding on light source radius, distance to occluder   · "Unfinite " precision - tiny/huge objects cast proper soft shadows, light source can be 1000 km away   · Visible in reflections/refractions   · Correct shadows from transparent objects - depanding on alpha texture • Physically Based Rendering - only one material, which supports all effects • Loading/saving scenes, animations, meshes, generating BVH trees • Tonemapping, bloom, FXAA, ASSAO (from Intel) Future plans: • Switching from DX11 do DX12 - to allow for indexing meshes inside shaders, support for huge scenes • Shadows for non-overlapping lights can be calculated in a single step! Amazing potential for rendering huge scenes. • Adjustable visual quality through tracing a few more rays per pixel - like 9, reducing the need for heavy blur • Dynamic Global Illumination • Support for skeletal animation • Support for arbitrary animation - ex. based on physics - cloths, fluids • Dynamic caustics • Volumetric effects, patricles - smoke, fire, clouds • Creating a sandbox game for testing
  3. IcyTower

    Real-time hybrid rasterization-raytracing engine

    Album for Real-time hybrid rasterization-raytracing engine
  • Advertisement

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

GameDev.net is your game development community. Create an account for your GameDev Portfolio and participate in the largest developer community in the games industry.

Sign me up!