Portal rendering / culling module for Godot
Go to file
lawnjelly 5969d06e08
Search for statics within rooms is now recursive
Statics can now be in hierarchies in rooms instead of expecting meshes hanging directly from the room.
2019-09-17 09:32:18 +01:00
config.py Add files via upload 2019-09-11 08:09:36 +01:00
INSTRUCTIONS.md Update INSTRUCTIONS.md 2019-09-16 18:25:32 +01:00
lbitfield_dynamic.cpp Dynamic objects now working 2019-09-13 19:15:25 +01:00
lbitfield_dynamic.h Dynamic objects now working 2019-09-13 19:15:25 +01:00
ldob.cpp DOB visibility culling added 2019-09-16 14:23:10 +01:00
ldob.h DOB visibility culling added 2019-09-16 14:23:10 +01:00
LICENSE Initial commit 2019-09-11 08:04:27 +01:00
lplanes_pool.cpp Hiding of unvisited rooms more efficient 2019-09-15 16:16:09 +01:00
lplanes_pool.h Hiding of unvisited rooms more efficient 2019-09-15 16:16:09 +01:00
lportal.cpp DOB visibility culling added 2019-09-16 14:23:10 +01:00
lportal.h DOB visibility culling added 2019-09-16 14:23:10 +01:00
lroom_converter.cpp Search for statics within rooms is now recursive 2019-09-17 09:32:18 +01:00
lroom_converter.h Search for statics within rooms is now recursive 2019-09-17 09:32:18 +01:00
lroom_manager.cpp Search for statics within rooms is now recursive 2019-09-17 09:32:18 +01:00
lroom_manager.h Search for statics within rooms is now recursive 2019-09-17 09:32:18 +01:00
lroom.cpp DOB visibility culling added 2019-09-16 14:23:10 +01:00
lroom.h DOB visibility culling added 2019-09-16 14:23:10 +01:00
lvector.h DOB visibility culling added 2019-09-16 14:23:10 +01:00
README.md Update README.md 2019-09-16 18:07:22 +01:00
register_types.cpp Refactor LRooms and LPortals to no longer be part of scene graph 2019-09-15 15:39:01 +01:00
register_types.h Add files via upload 2019-09-11 08:09:36 +01:00
SCsub Refactor LRooms and LPortals to no longer be part of scene graph 2019-09-15 15:39:01 +01:00

godot-lportal

Portal rendering module for Godot 3.2
Work in progress, not yet released

Video of initial testing:
https://www.youtube.com/watch?v=xF_3Fe2HRdk
https://www.youtube.com/watch?v=NmlWkkhGoJA

Feel free to leave suggestions / feature requests on the issue tracker, especially regarding ease of use.

Current status

The system is mostly working. I am now testing / polishing the interface and adding a few features. I will make a first release before implementing PVS as PVS is an optional feature.

Roadmap

  • Auto conversion of named room spatials and portal mesh instances to LRoom and LPortal DONE
  • Auto creation of mirror portals DONE
  • Recursive determine visibility DONE
  • Prevent memory allocations (use pools for plane vectors) DONE
  • Add support for objects moving between rooms - cameras, players, physics etc - DONE
  • Refactor code, moving LRooms and LPortals outside scene graph DONE
  • Cleanup code, Optimize DONE
  • Handle special cases (multiple portals views into room etc) DONE
  • Bug fixing / testing ONGOING
  • Optimize non-moving statics DONE
  • Closable portals
  • PVS (primary and secondary)
  • Investigate multiple passes (shadows, lights)

Instructions

See INSTRUCTIONS.md

Installation

You will need to compile Godot from source (for now). See: http://docs.godotengine.org/en/3.0/development/compiling/index.html

Once the engine is compiling okay on your system, to add the module:

  • Create a folder inside godot/modules called 'lportal'
  • Clone / download this repository as a zip file and place the files in the lportal folder
  • Compile the engine as normal, it should automatically pick up the lportal module
  • Note that to export to other platforms you will also have to compile export templates for those platforms

You will know the installation was successful when you see a new Node type 'LRoomManager' in the Godot IDE.