GOPHERSPACE.DE - P H O X Y
gophering on hngopher.com
HN Gopher Feed (2017-10-21) - page 1 of 10
 
___________________________________________________________________
A reasonably speedy Python ray tracer
72 points by AlexeyBrin
http://www.excamera.com/sphinx/article-ray.html
___________________________________________________________________
 
IvanK_net - 4 hours ago
I made one in Javascript a long time ago :)
http://renderer.ivank.net/After some time you can get this:
http://renderer.ivank.net/balls.jpg :)Edit: I am glad you like it!
I also made this fully-GPU renderer (actually, it is a game):
http://powerstones.ivank.net/
 
  FeepingCreature - 4 hours ago
  I also made one in Javascript.
  http://feep.life/~feep/jsfarm/info.htmlIt uses a Lisp-based scene
  description language (with macros!) and WebRTC to form a P2P
  network of compute nodes, entirely in the browser, with near-
  native performance thanks to dynamic compilation to AsmJS.It got
  0 votes on Hacker News.I'm not salty.edit: Source on Github!
  https://github.com/FeepingCreature/jsfarm/edit: I reproduced your
  scene, give it a bit to render.edit: Wow, you have a lot of neat
  scenes!edit: And here you go. rendered at ~2.5 million samples a
  second, thanks JumboCargoCable whoever you are! (You can set your
  nick in the settings menu accessible via the gear icon in the top
  left.) https://i.imgur.com/UvdBhq1.jpg and scene
  http://bit.ly/2yYciCS though I think I made it too bright.edit:
  Some people appear to have buggy systems that always return black
  pixels. :-(edit: Could whoever is SilkyDoorGame please post their
  cpu, os and browser?
 
    dang - 3 hours ago
    If you email hn@ycombinator.com we'll send you a repost invite.
    I don't want to do it now because once a particular theme (in
    this case ray tracers) has made the front page it's usually not
    a good idea to post another one too soon.
 
      FeepingCreature - 3 hours ago
      Awesome, will do! Thanks a bunch.
 
    CyberDildonics - 2 hours ago
    Why not just us json for scene description?
 
      FeepingCreature - 2 hours ago
      It's not strictly speaking a "scene description language", it
      just looks like that at first glance.It's a fully capable
      compiled programming language, which I happen to have written
      a raytracer in. Check out the "pathtrace" tab.The advantage
      is if there's some issue with the raytracer, you can fix it
      yourself. And you can use arbitrary scripts for making
      scenes. (Though the scene in memory must not exceed 32MB,
      which may limit you somewhat.)
 
    gt_ - 3 hours ago
    Great scene description language
 
    wdfx - 4 hours ago
    That a great concept. I'd vote for that :)
 
      FeepingCreature - 3 hours ago
      Yeah in retrospect my mistake was to bet on a single
      announcement post instead of a series of smaller posts over
      the months I developed it. That's the sort of thing you only
      realize is a mistake after you'd made it, though.
 
        nathancahill - 3 hours ago
        Repost it now with "Show HN:" in the title. Helps
        distinguish OC work.
 
make3 - 1 hours ago
now do a Tensorflow version!
 
m00s3 - 5 hours ago
Anyone besides me disturbed that one of the code samples had
function that took 3 parameters, 2 of which where 'O' and 'D'? I
had to look at it a few times before I realized those were
different variables.
 
  dahart - 1 hours ago
  Anytime I start to feel disturbed about anyone else's code, I
  remember to re-read this:
  https://news.ycombinator.com/item?id=13571159
 
  willvarfar - 5 hours ago
  In 3D programs it's normal for O to be origin and D direction.
  It's a convention you'll see in most codebases and it's
  completely undisturbing.
 
    ci5er - 3 hours ago
    Really? Since when?It's been a long-o time since I did any 3d
    physics or rendering code (in C), maybe even since before the
    WWW, but I don't remember this convention... (I mean - sure -
    it makes sense, but I don't recall the two 3-space triples
    being necessarily called that even in things like GL)
 
      berkut - 2 hours ago
      OpenGL doesn't do raytracing where you have a ray origin and
      direction though, so you wouldn't have seen it there.Using
      the full terms or shortening them to Dir and Orig are more
      conventional in my experience.It gets even more fun when you
      get to evaluating BSDFs for materials and you have variables
      like wi, wo, and different people use them in different ways
      :)
 
Mauricio_ - 1 hours ago
For anyone without any idea how to do this, Ray Tracing in a
Weekend is a good introduction. It teaches you to do the image in
the cover in a pretty short time.
https://www.amazon.com/gp/product/B01B5AODD8
 
gravypod - 4 hours ago
I'd be interested in how this compares to one optimized by Numba.
 
CyberDildonics - 2 hours ago
The demos that come with embree do simple stuff like this in real
time, which would be about 450 times faster, so I wouldn't call
this 'reasonably speedy'.
 
  dahart - 1 hours ago
  This one is close to real-time at 115ms. Maybe you missed
  paragraph 2?
 
  Marazan - 2 hours ago
  'in python'No one is ever going to even think of implementing a
  ray tracer in Python for anything more than fun or education.
 
berkut - 3 hours ago
While cool, it should be pointed out that this way of ordering
things doesn't really scale with scene complexity (more objects,
more complex triangular meshes requiring acceleration structures)
or image size, as the number of masks required to determine
visibility would become very prohibitive.One of the great things
about raytracing (at least the basics before you get to more
complicated light transport), is how simple the normal recursive
algorithm is for rendering a scene. This method in the article
complicates that greatly with the mask passes, and I guess could be
termed a wavefront renderer.
 
melling - 3 hours ago
I?ve got a list of random resources here:https://github.com/melling
/ComputerGraphics/blob/master/ray_...
 
webkike - 4 hours ago
In college I built a raytracer in Rust, and I have to say it was
one of the most valuable learning experiences I have ever had.
 
  tyingq - 3 hours ago
  >In college I built a raytracer in RustI don't usually feel old
  around here.  Every once in a while, however...
 
    webkike - 3 hours ago
    Yeah I say in college, but that was only a few months ago.
    College isn't that long, I might as well have said "in
    highschool"
 
      khedoros1 - 3 hours ago
      "In high school" was over 14 years ago, for me ;-) The start
      of "in college" was about 14 years and one month ago.And Rust
      is "only" 7 years old. Time slips by.
 
      [deleted]
 
Marazan - 5 hours ago
I wrote a pure python (No Numpy) ray tracer as a learning exercise.
Spoiler: it was slowwwwwwwwwww.I converted to NumPy and it was just
slow. I then went to array broadcasting (which required
surprisingly few code changes due to NumPy being pretty awesome)
and it became fast.
 
  tgb - 1 hours ago
  I'm familiar with the concept of broadcasting in Numpy, but I
  don't understand what it means in this context. Can someone
  explain?
 
ricardobeat - 3 hours ago
Are the reflections in examples like this physically correct? My
brain kind of expects the floor to be strongly curved when
reflected in the sphere. Maybe it's just the unfamiliar,
unrealistic environment?
 
  berkut - 3 hours ago
  It depends on where the camera is, how far the floor extends and
  the reflection angle (which might be different for different
  materials / IOR).https://imgur.com/a/PCG4O
 
  CyberDildonics - 2 hours ago
  The simple answer is no, but unless there is an error the rays
  will at least be traced from the reflection angle.  All light you
  see bouncing off of hard surfaces is some sort of reflection and
  even for sharp reflections there are a lot of details.One is
  fresnel falloff towards edges, which is simple.  Another is depth
  of field carrying into reflections, which is more difficult and
  not common (yet).
 
  dahart - 1 hours ago
  Yes, for perfect mirror surfaces. The scene isn't very physically
  realistic, but the reflections are doing the right thing given
  the scene. The floor is strongly curved in the reflections. The
  reflection of the horizon line isn't, only because the camera is
  near the floor and looking almost level. If the camera were up
  higher looking down, the horizon reflection would be more
  strongly curved.
 
  RBerenguel - 3 hours ago
  I'm pretty sure the strong curve is because (normal) floors are
  finite planes, and usually we don't look so close from the
  sphere's equator in real life.Once I wrote a raytracer in Lisp
  based on pg's code in ANSI Common Lisp, so I've seen the results
  of changing camera positions.