Friday 20 May 2011

PNVS, programmer now very satisfied

I have a terrible head-cold and ache all-over so not in the mood to sit at my computer for much longer, on the whole there's no real visual difference you'll detect in the PNVS in this re-write today.

I found a texture output channel Leadwerks only uses for Global Illumination (emissive alpha), we don't need GI so I hijacked this to store heat-map information. This is normally invisible and can only be viewed when rendering a copy of the gbuffer (or small rectangular area)  via a PNVS post shader. This is hiding heat information in the scene which is then made visible when writing a mask or rectangle over the buffer using the PNVS shader.

Heat maps can now be added to smoke and flame effects, these should work for TADS, NVG, PNVS rendering without special treatment. Which is what I wanted in the first place but couldn't easily, the Leadwerks pipeline is a little cramped at this point and I felt it was important to do this in a single pass for performance reasons.

This also works with any shaped mask and works flawlessly with GLOW maps (emissive textures used for headlamps, instrument lights etc.), these don't use their own alpha channel. Only issue is the instrument symbology which uses this alpha channel to mask off video underlays on the MPDs, this results is symbology showing up quite bright in close up external views (which just looks pretty but not intended).

One thing still to do, calibrate the mix of background and heat-maps to balance illumination in total darkness.

This week saw a fair amount polishing to view system, two different camera motion systems and more weapons tweaking. Camera motion based on Cubic motion conveys smooth formation flying, since posting a short demo video on Vimeo I've since changed it so the motion is based on the 2D motion of the tracked object in the frame so there's less 'wobble' if it's flying towards or away, and plays 'hard to catch up' if flying across your point of view. Works remarkably well. The other camera motion setting will be good for weapon cams where short attack and decay vibrations convey kinetic energy.

AD set about the tree normal problem, creating a new set of trees to experiment with along with custom billboard models. If you see strange looking elf trees over the next few days don't be too surprised. Dave spent some time playing World of Tanks which inspired some ideas on destructible environments. Completing a building in rubble model that I hope can be re-shaped to fit small models when they are flagged as destroyed. We can use the FX system to mask the transition with debris and dust.

Heat maps now a post-effect, making invisible buffer information visible

Terrain is too dark, will fix that
Improved sky and ground visibility
Added some heat information to the terrain tile shader based on red albedo and specular.

Some fine tuning of light levels and electronic noise. Viewing the PNVS without any 'egg' tinting so I can see what the buffer looks like. Bright objects seems to flare OK, here's a strobe going off.


Dust and light particles push to the heat buffer. I left in a smoke type that masks heat which might be useful for aerosols.

5 comments:

  1. does this game uses directx or opengl?
    Looking forward to play this game!

    ReplyDelete
  2. Those are some of the best IR Heat maps I have ever seen in a game (engines glowing hotter than surrounding airframe .. especially nice). Is it possible to have invisible hot exhaust effects which are only rendered thru the GI channel?

    Might be going a bit far but ground IR heat maps where vehicles have been for some time (but now moved on) could be pretty cool (or are we back to icing again flex?), low priority & not especially easy to do I suppose.

    ReplyDelete
  3. All the heat maps have been done. I don't think it's feasible to do heat trails at this time even if we wanted to. Think of games that have tanks which leave tracks behind them, often they don't persist long.

    If we add refraction emitters to heat exhausts it would be possible but I want to avoid adding those. I tried them earlier but they're a performance killer. Certainly technically possible, I'm editing the particle emitter shaders now to add heat information into the frame buffer.

    ReplyDelete
  4. Oh My Godness...It is unreal.Last sshot it's just honey.I do not know from where do you get your knowledge,I can only write hats off.Number of details to include in this game is unbelievable.BTW Black/white Pnvs looks great, I'm glad that you can choose.

    ReplyDelete