Share this project


Share this project

Project Eternity is an isometric, party-based computer RPG set in a new fantasy world developed by Obsidian Entertainment.
Pillars of Eternity is an isometric, party-based computer RPG set in a new fantasy world developed by Obsidian Entertainment.
Pillars of Eternity is an isometric, party-based computer RPG set in a new fantasy world developed by Obsidian Entertainment.
73,986 backers pledged $3,986,929 to help bring this project to life.

Graphics and Rendering


Update by Adam Brennecke, Lead Programmer and Executive Producer

Over a year ago, in Update #49, we showed you the first movie of Pillars of Eternity. The movie showcased a beautiful scene in the Dyrwood complete with dynamic lighting, per-pixel occlusion, dynamic water and waterfall, and a day-night cycle. In this update I would like to give you an inside look on how these images are put together and rendered in the game, and I will cover new rendering features that we've added over the past year to address feedback from our backers about how our characters look in the scene. Warning: things might get technical!


We are going to be going on update hiatus for the next three weeks as we prepare for E3 in Los Angeles. After E3, the next update will feature the final classes covering The Front Line (fighters and barbarians).

Adam Brennecke describes the rendering process.
Adam Brennecke describes the rendering process.

At E3, the team will be showing Pillars of Eternity at the Paradox booth behind closed doors. To avoid spoiling what we will be showing, we will be saving these moments until you get to play it. Because we want to include you in the experience, we will be taking photos at the booth, and in a future update we will be sharing more screenshots from the demo. To give you a small taste, here's a sneak peek at a scene that will be shown at E3:

Engwithan ruins at night.
Engwithan ruins at night.

Rendering Time


Day/night area example.
Day/night area example.

As we mentioned previously, our beautiful backgrounds are rendered out of Maya as a 2D image. They are very large images, sometimes over several gigabytes of raw data, and before the images get into the game we run a program that compresses the data. Maya renders out the backgrounds in four layers or "passes": final, depth, normal, and albedo. These passes are combined together in Unity for per-pixel occlusion of 3D objects, and for real-time dynamic lighting. When we bring the backgrounds into the game, they look like a flat 2D plane, and when viewed in Unity's editor the whole world has an awkward skewed look to it. The illusion comes together only when an orthographic camera is placed at the perfect angle.

Some of the rendering passes in an area.
Some of the rendering passes in an area.


Next we overlay the 3D world on top of the 2D rendered image. The characters are dynamic 3D skinned meshes that are animated and then rendered into the scene with a variety of shaders and materials. Our default material that we use on most characters includes a normal map (adds tiny variations in surface detail), specular map (adds shininess), and an albedo map (adds the base color). The default material also supports a tint map, which allows our designers and you to customize the colors of armor, hair, and skin.

We have other shaders that can change the look and feel of characters. For example, we have a metal shader for armor that adds an extra level of shininess and can reflect the environment via an environment map. A Cloth shader removes the shininess, and allows the character artists to make outfits made up of cotton, wool, and satin. We have special materials, like an emissive shader that isn't affected by light, used for the fire-godlike, ghosts, spectres, and the windows seen in the screenshots and video.

Because the characters are 3D, they need to be lit differently than the background image. We use a system with two directional lights. The first directional light is the key light and typically matches the sun color and intensity in outdoor scenes, and this light can be modified by the day-night cycle to cast moonlight at night. The second directional light is used as a fill light to make sure the "back side" of a character isn't in total darkness. The two lights are adjusted per scene depending on the pre-rendered light settings to match the sun direction, mood, and desired atmosphere.

In addition to the directional lights, we use dynamic deferred lights that can affect the background and characters. For example, if a torch is placed in a scene, the torch can illuminate both the 2D environment and a 3D character standing nearby. In addition, deferred lights are used for spell effects; a fireball explosion emits a burst of light, brightening up a dark dungeon room.

Bringing it all together

We noticed, and so did many of you, after releasing our first few screenshots, the 3D characters were not matching the 2D rendered scene as much as we would have hoped. So we put our thinking caps on, and we came up with new features since our first batch of screenshots, including dynamic ambient and a shadow control system.

To really make sure the characters fit in the scene, we came up with an ambient system that samples color from the 2D background, simulating a quick and dirty global illumination model. Characters pick up subtle color variations depending on where they are standing and what type of environment they are in. If a character is standing in a lush green jungle, it will pick up a subtle green hue from the light reflected off the environment. Game programmers love fast and cheap methods, and the ambient system gives us great results with little impact on rendering performance.

Ambient before and after:

Image with ambient off.
Image with ambient off.
Image with ambient on.
Image with ambient on.

Another feature that we've added recently to solve the issue of grounding characters into the scene is a system to shadow 3D characters when traversing into dark shadowy areas in the 2D image. The new system samples a low resolution image map which controls the contribution of the directional sunlight on the character, and to avoid double shadows, the same image controls the value of the dynamic shadow map. Lastly, to better match the 2D and 3D shadows, we color the dynamic shadow to match the 2D rendered shadow color (which often has a blue hue to it).

Shadow Blending before and after:

Image with shadow blending off.
Image with shadow blending off.
Image with shadow blending on.
Image with shadow blending on.

To tie everything together, we can optionally add post process effects. In this scene, we've added a very subtle bloom effect that effects both the environment and characters.

I hope you didn't get lost in all the technical talk! The important thing is that we hope you like the end result. We are satisfied with where we are at, but we always have a few ideas on how to improve the look and quality of the graphics. Improving the look of the game will be an ongoing process until we ship... and beyond. If you have any questions, please ask in our forums! Thanks for reading.


Only backers can post comments. Log In
    1. Carson Hill on

      Looks fantastic :) I'm super excited about this.

      One thing worth mentioning though... I notice in the demo video that there is an invisible layer of "real" map in which players can move around, overlayed above/below the painted environment. That's a nifty way to handle the map, and one that other games have used before. I'm a bit worried though that there seems to be a wide gap between the tower used in the lighting demo and the nearest part of the "usable" space.

      In other words, the player would be unable to stand beside the guard at the tower's southern corner. This doesn't affect gameplay much, and obviously there is a need for a certain amount of "invisible wall" usage, but too much can impact a player's sense of immersion.

      I guess what I'm saying is to try to clip the "usable" space to include as much of the "perceived usable space" as possible. Probably something that you guys already knew. Keep up the good work!

    2. Missing avatar

      Mad Squ on

      @ranting dude: You clearly forget that you are only stating your personal taste. You are no special snowflake and by no means you can make generalised assumptions like you did.

    3. Missing avatar

      VkBest on

      I wonder my macbook pro retina will be enough powerful for this game.

    4. Bryy Miller on

      Ruined by religion? How... so?

    5. Arvid Granat on

      I enjoyed this update! Lighting looks good, as far as I can tell. Whoever made that large corner tower in the middle of the video did a fantastic job with it! I love how the individual stones look just slightly unevenly placed and worn, giving it a very authentic feeling!
      Also, Adam gives a very good impression in this video. He must be a pretty cool guy to know.

    6. Missing avatar

      Lukas M on

      Being a soon-to-graduate masters students in computer graphics, this update was very interesting for me in the way that i learnt how the 2D vs 3D discrepancy is approached. Also the "GI" solution is neat.

    7. Missing avatar

      Skirge01 on

      Awesome update! I thoroughly enjoyed the explanations for why you created these effects, but would have certainly been lost without examples!

      I always find it ironic that those who are against any form of religion being forced upon them generally expect their own lack of religion to be forced upon everyone else. Pot, meet kettle. Intolerance breeds intolerance. It seems that agnostics are often the most tolerant ones among us.

    8. frederic tarabout on

      Very interesting! Thanks for sharing the secrets.
      Looks amazing. :)

    9. Willem on

      Very good work on the ambient lighting on the models, makes a huge difference; and thanks for the update.

    10. Missing avatar

      elfkerben on

      thx for the update, really nice to read

    11. Missing avatar

      Mamali Kosari on

      Looks Awesome! Can't wait!

    12. bullbill on

      @trethon - so your saying any form of fictional religion ruins something? so sith and jedi are ruined aswell? eh darth trethon?

    13. dungeoncrawl on

      @trethon - what are you talking about 'ruined by religion'? Makes characters interesting. If everything was fighters and wizards it would be boring. Explain.

    14. gandalf.nho

      Nice update!

    15. jimmywolf on

      most the time i say graphic don't mater but seeing the detail difference of your work is very impressive an it does make a difference ! keep of the good work am looking forward too the final game.

    16. autumn sevier on

      looking great^^

    17. Jeremie Lariviere

      Nice update!

    18. Tobi (Crusader Kickstarter pls!!) on

      thanks for the update and the video, loved the music!

    19. Sir Chaox on

      Amazing visuals. Great job!

      When are we gonna see that fireball exploding in a dark dungeon room? :)

    20. Tomimt on

      Lovely, very lovely.

    21. Dawn_

      Gotta love Adam ;). I still remember is video playing icewind dale xD

    22. Michael Chen on

      lol, I guess everything is better with mod support; but having mod support would give the user more options so there is no reason for me to complain about having more options.

    23. Darth Trethon - Exile in Torment on

      Umm....sweet? No, really it's all quite awesome. I'm still kind of upset most classes are ruined by religion....four classes are ruined by religion: chanter, monk, paladin and priest. Then you've got three additional classes on top of the religious ones that fall under the not very smart category: fighter, barbarian and ranger. So we're only left with four real class choices: Wizard, Cipher, Druid and Rogue. Then rank those four in order of awesomeness and you have: Cipher, Druid, Wizard and Rogue and that's the heart and soul of gameplay right there.....the other seven are redundant, unnecessary and overall seem like a waste of time....I hope this doesn't end up ruining the size of the game and reducing it to a game that can be blasted through in a few hours and just leaves the players feeling like well, that meh.

    24. tybalt on

      Smart way to use a 3d engine, the result is terrific !

    25. Ed H. on

      I always get excited when I see a Project Eternity update. Did not disappoint.

    26. trisenk on

      I hope that on E3 you won't show a stunning looking gameplay video that will look 200% better that the final product two years later. Just saying...

    27. Missing avatar

      Jon Austenaa on

      Uhm how about releasing the source code and the 3d maya content so the community can make an everything 3D mod (*^﹏^*)

    28. Steven L. DeVeglio on

      Great update! I loved all the nitty gritty! Good luck at E3!

    29. Draco Rat on

      I love this update!