Not logged in, Join Here! or Log In Below:  
News Articles Search    

Submitted by James L Boyd, posted on September 01, 2002

Image Description, by James L Boyd

This is a little system I put together for fast rendering of mirrors for (limited circumstance) in-game use. It's very simple indeed, but I don't recall seeing anything quite like it until the shots of Super Mario Sunshine, so I just had to figure it out (I've been trying for ages, and finally got it just about right -- it's the positioning/zooming code that was that hard part).

Each mirror has an associated camera, which is positioned 'opposite' the main viewing camera behind the mirror, and simply renders its view to the back buffer. This is then copied into the mirror's texture. Mirrors only render when the main camera is within a certain range, so they only affect frame rates when you can see them. There are a couple of limitations:
  • You can't have anything behind the mirror; not a problem if your level is designed around this (eg. a single-sided wall behind the mirror is fine, since its back can't be seen by the mirror's camera);

  • It's not 100% physically correct, so you get 'flattening' at shallow angles (which is avoided by the tried and tested method of... limiting where the player can go :)

  • It's limited to the size of the display mode here, since it renders to the back buffer (eg. asking or a 512 x 512 texture on a 640 x 480 screen will fail, though this example automatically creates a smaller texture). Bear this in mind when running the demo.
  • Anyway, it runs very well on modern machines (eg Geforce2/3 and up), and not too badly on low end (ATI Rage). It was developed on an ATI laptop, where it ran quite acceptably, but I've put frame-tweening code in for this public release, so it skips frames there :)

    Try it out here... [640k]
    (Use cursors plus A and Z to move around; the mirror will follow you. Click and drag the mirror to move it manually.)

    Mail me if you need to know any more about it!

    Image of the Day Gallery


    Archive Notice: This content is archived, and commenting is no longer active. It is here for reference purposes. This content was added on an older version of flipcode, before the site closed in 2005.
    Hosting by Solid Eight Studios, maker of PhotoTangler Collage Maker.