pex-gl / pex-renderer

Physically based renderer (PBR) and scene graph for PEX.
https://pex-gl.github.io/pex-renderer/examples/index.html
MIT License
237 stars 16 forks source link

Layer system #329

Closed vorg closed 1 year ago

vorg commented 1 year ago

Often we need to render different parts of scene to different cameras with potentially different viewports.

Proposed implementation adds layer property to an entity. With the following rules:

Consider following setup

floorEntity
directionalLightEntity
redCubeEntity.layer = 'debugView'
debugCameraEntity.layer = 'debugView'
blueCubeEntity.layer = 'mainScene'
cameraEntity.layer = 'mainScene'

You would then draw two cameras at once

renderEngine.render(
    world.entities,
    cameraEntities)

Render engine would go through all cameras and:

By default both cameras would be drawn on top of each other unless they have viewport specified

debugCameraEntity.viewport = [10, 10, 200, 200]