Portal rendering / culling module for Godot
Go to file
lawnjelly 08236645dc
Add files via upload
2019-10-23 11:21:59 +01:00
images Add files via upload 2019-10-23 11:21:59 +01:00
INSTRUCTIONS.md
LICENSE
README.md
SCsub
config.py
lbitfield_dynamic.cpp
lbitfield_dynamic.h
lbound.cpp
lbound.h
ldebug.cpp
ldebug.h
ldob.cpp
ldob.h
lhelper.cpp
lhelper.h
lplanes_pool.cpp
lplanes_pool.h
lportal.cpp
lportal.h
lportal_all.cpp
lroom.cpp
lroom.h
lroom_converter.cpp
lroom_converter.h
lroom_manager.cpp
lroom_manager.h
lscene_saver.cpp
lscene_saver.h
lvector.h
register_types.cpp
register_types.h

README.md

godot-lportal

Portal rendering module for Godot 3.2
Work in progress

plane_lines

Although not yet released, I am trying to make sure that committed versions are runnable (especially stable branch), so if you want to test out the system, simply follow the installation instructions. Note that the function definitions are still subject to change, but any rooms you build should be compatible with later versions.

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

Demos / Tutorials

https://github.com/lawnjelly/lportal-demos

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

Current status

The first demo tutorial (see above) is now working with the internal godot baked lightmap workflow. It shows registering dynamic objects (DOBs), loading and unloading levels.

I will be polishing this and getting the external lightmap workflow working.

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
  • Optimize non-moving statics DONE
  • Optional convex hull bound for rooms DONE
  • Add debug graphical view of portal planes DONE
  • Add debug graphical view of room bounds DONE
  • Dealing with shadows from objects outside of view PARTIALLY DONE
  • Building baked lightmap workflow ONGOING
  • Bug fixing / testing ONGOING
  • Shadow caster optimization
  • Closable portals
  • PVS (primary and secondary)

Instructions

See INSTRUCTIONS.md and TUTORIAL.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.