ID:1432233
 
This is more of a "what-if" style post, coupled with wondering about getting a few people's thoughts on this prior to maybe making a feature request.

I've noticed one or two threads asking for the ability to "nest" blend operations; i.e. make a few icons blend together one way, and then blend together another over top of a third-party icon. An example of this is having two lighting icons, adding them together, and then multiplying that by the turfs underneath, etc.

So, since we have access to it in hardware mode (and can approximate it in software easily enough), one feature of modern videocards that could give us a -lot- of flexibility is the frame buffer; i.e. instead of rendering to the playfield, you could render to an 'in-between' graphics, and then re-render that onto the screen however you wanted.

To me this could give BYOND games a ridiculous amount of graphical power for special effects that they don't currently have. On any atom (and Image), simply specify (via boolean) whether the atom should be drawn to the playfield (as it is now), or to the framebuffer. Second, on each client add vars for the framebuffer, namely color, alpha, draw mode, and matrix transform.

Yes, matrix transform. This would give the game the ability to custom-rotate the client's framebuffer view independent of everyone else, as well as change colour, tinting, etc. Does anyone rememeber the "500 feature feast collage" thread that included a racing-game prototype where the entire playfield rotated around the player's car?

Now imagine that, but multiplayer.

Additionally, you could do complex lighting effects by drawing a bunch of icons in additive blend to the framebuffer, then specifying the framebuffer to be drawn in multiplicative mode.

So, the idea is simple: Allow a "hidden" icon, drawn to by the client much the same way the current screen is, which atoms and images (e.g. overlays) can be drawn to instead of the main playfield. Allow matrix transform, blend mode, alpha, and colour to be set per-client. The framebuffer can't otherwise be interacted with, and prior to the matrix transform would basically be the exact same view rectangle as the (otherwise unaltered) play field would be, for purposes of view calculation, atoms drawing, etc.