12
Skayo
6y

Another update on my 3D Software Engine:
Big progress since my last rant.
I now have a simple lightning with the Gouraud Shading Algorithm!

Looks really cool now!

Btw for those who are interested, I am following a tutorial but I'm translating everything to Lua/LÖVE2D. Here's the link to the tutorial:
https://davrous.com/2013/06/...

Comments
  • 1
  • 2
    Won't you run into performance problems real soon? I mean, as fast as your average Core i5 or whatever is, it's simply not good enough at SIMT/SIMD type stuff and shoveling the huge amounts of data real quick (which GPUs excel at).

    Love the project though, keep at it! I'm glad someone is doing graphics, there aren't enough graphics programmers around.

    I'm building a CPU based 3D renderer too, but mine uses raytracing with physically based techniques. Not for realtime, more like static scenes for animation rendering and stuff.
  • 2
    <@RememberMe>

    As I said, I'm following a tutorial and therefore I currently don't care about performance as long as my i7 handles it.

    And yeah got interested in graphics programming and thought why not doing a little tutorial :)
  • 2
    @Skayo
    A recent test render from mine. This is the Blender 2.78 opening splash scene with the extra stuff removed. Still a crapton of polygons, I wanted to see if the renderer could handle it.
  • 2
    <@RememberMe>

    Wow looks awesome!

    Is it fast?
  • 2
  • 2
    @Skayo depends on how you define fast. It's CPU-only, and not intended for real-time graphics. So if you want to run a game using this, no way. Too slow.

    However, if you look at the complexity of the calculations being performed, it's pretty damn fast. The branch I'm working on right now will add support for general BSDFs (bidirectional scattering distribution function, look it up) and textures, and it will end up looking far more realistic than anything but the most advanced game engines at highest settings. This is optimized for quality, not speed.

    Also the technique I'm using belongs to a class of algorithms called global illumination - it realistically calculates the effects of a light all over the scene, and it obeys energy conservation. No shady hacks here (if you do graphics programming for games, you'll be surprised by how many shady hacks there are! Phong shading in its default form, for example, does not conserve light energy).

    So yeah, different tradeoffs.
  • 2
    @Skayo also, as a raytracer using BVHs (bounding volume heirarchies, another thing to look up!), it scales as O(log n) in the number of vertices. So it can handle truly massive scenes (we're talking tens or hundreds of millions of vertices) with relative ease.
Add Comment