post shader
This commit is contained in:
35
docs/graphics.md
Normal file
35
docs/graphics.md
Normal file
@@ -0,0 +1,35 @@
|
||||
# Drawing, cameras, viewports, logical size, and so on
|
||||
|
||||
A camera is a view into the game world. A camera can be "rendered", which means it renders the world, and what it can see in the world. A camera may draw to a surface, or to the main window. Objects in the world will render so that if their position is equal to the camera position, that is in the center of the screen. HUD functions always render so [0,0] is the bottom left of the camera's view.
|
||||
|
||||
# COORDINATES
|
||||
Screen coordinates start in the upper left corner at [0,0] and extend to the bottom right, in pixels. Raw mouse coordinates are in these.
|
||||
|
||||
# RENDERING PIPELINE
|
||||
|
||||
In prosperon, you call graphics rendering functions at well defined hook points. These are interleaved as necessary with predefined created objects, like sprites, 3d world models, and so on.
|
||||
|
||||
The engine stores a command buffer. When you issue "draw" commands, they are recorded into the command buffer. These are batched as much as they can be; if there is no significant state change between, the draw commands can be coalesced into one. Then, for each camera, the draw commands are executed.
|
||||
|
||||
# RENDERING COMPONENTS
|
||||
## MATERIALS
|
||||
A material defines the inputs to a shader.
|
||||
|
||||
## PIPELINES
|
||||
Pipelines are how the rendering engine is set up. Switching pipelines can be done for special effects.
|
||||
|
||||
## SPECIAL EFFECTS
|
||||
Sometimes you want a special effect. While there are many objects in prosperon you can create and have the engine handle for you, a special effect typically requires a bit of code.
|
||||
|
||||
# LAYERS
|
||||
All things that draw have a layer. If no layer is set, the implicit layer is "0". Even draw and hud functions have a layer. To draw a draw function on a specific layer, set that function's "layer". ie,
|
||||
|
||||
this.draw = function() { render.rect(); }
|
||||
this.draw.layer = -5;
|
||||
|
||||
Now that layer will draw at the -5 layer.
|
||||
|
||||
# CAMERAS
|
||||
Everything is drawn via cameras. Cameras can draw directly to the screen, or they can draw to an offscreen render target. By default, everything is drawn to all cameras. There will eventually be a tag that lets you filter what is drawn to specifc cameras.
|
||||
|
||||
Cameras have a resolution they draw at, "size".
|
||||
Reference in New Issue
Block a user