Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 9082477
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: June 16, 20262026-06-16T20:34:01+00:00 2026-06-16T20:34:01+00:00

Just for learning purposes, I was looking at raytracing techniques. I recently discovered Global

  • 0

Just for learning purposes, I was looking at raytracing techniques. I recently discovered Global Illumation and its variants, reading at this amazing work by Kevin Beason.
I did tried to port smallpt in another language (Lua).

I got something working fine, so far, but it renders the scene too slowly in my opinion.
So far, I digged over the internet, and i’ve seen in lots of technical papers covering the subject that this was the main problem of global illumination techniques, especially path-tracing.

It seems to me there are methods to faster the process, such as spacing filling curves (Hilbert curves, for instance). Basically, they all divide the viewport into buckets (or tiles), and then command the render to process path-tracing on each single bucket in a specific order. Technically, I didn’t look at how to implement Hilbert curves, but I would like to understand how, in practical terms, this can make the entire process faster ?

My first assumption was, considering each bucket appart, the renderer was called on specific pixels, and then the others were samples using interpolation tricks, but actually, it seems that the renderer is called on each single pixel on the bucket.

So, as a result, the renderer will process all the pixels of the map, which results in the same amount of work than two nested for loops (for each rows, each columns), in my humble opinion. So I do know i am obviously missing something, thus looking forwards some clean explanations.

Thanks in advance.

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-06-16T20:34:02+00:00Added an answer on June 16, 2026 at 8:34 pm

    Smallpt is designed to demonstrate global illumination with path-tracing in the fewest lines of code possible. As such it does not feature any performance optimisations.

    For anything more complex than simple scenes, most of the rendering time is spent calculating which object a ray hits next along its path, as this has to be done many times for each ray.

    A naive implementation will need to, for every ray bounce, compute the intersection of the ray with every object comprising the scene, in order to determine which object is hit next.

    To improve on this Acceleration Structures are used to reduce the number of ray/object intersections which have to be calculated, typically by partitioning up the volume enclosing the scene to avoid unnecessary intersection tests.

    There are two main approaches:

    • KD Trees – related to Binary Space Partitioning trees.
    • Bounding volume hierarchy – a hierarchy of (usually) axis-aligned boxes which enclose objects and other boxes.

    Performance-wise both work equally well, however I believe BVH’s are simpler to implement.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I have this class, just for the purpose of learning: public class MyClass{ //Looking
Just learning the world of jquery, and all my googling gives examples like this:
I'm just learning MVC3 now and this is really confusing me. I have a
I am working on a server client application right now (just for learning purposes),
I am looking at doing a small web application for learning purposes, using .NET.
I am just learning C and in my class this is a part of
I am making a simple CMS just for learning purposes and I have a
I am trying to develop an image slider using jQuery just for learning purposes.
This is for learning purposes. I wrote a script that will simulate typing. The
I have done my own small concurrency framework (just for learning purposes) inspired by

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.