godot-lportal/README.md

58 lines
3.4 KiB
Markdown
Raw Normal View History

2019-09-11 09:04:27 +02:00
# godot-lportal
2019-09-16 19:06:34 +02:00
Portal rendering module for Godot 3.2\
2019-09-18 14:32:39 +02:00
_Work in progress_
2019-09-18 14:33:19 +02:00
2019-09-23 12:29:07 +02:00
![plane_lines](images/plane_lines.png)
2019-10-09 12:34:57 +02:00
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.
2019-09-11 21:23:17 +02:00
2019-09-16 19:07:22 +02:00
Video of initial testing:\
https://www.youtube.com/watch?v=xF_3Fe2HRdk \
2019-09-16 19:06:34 +02:00
https://www.youtube.com/watch?v=NmlWkkhGoJA
2019-09-15 20:38:42 +02:00
2019-10-09 12:33:19 +02:00
_Feel free to leave suggestions / feature requests on the issue tracker, especially regarding ease of use._
2019-09-15 20:36:47 +02:00
2019-09-14 13:10:48 +02:00
## Current status
2019-10-14 16:43:12 +02:00
I am currently diverted from the main work on LPortal, trying to get some kind of lightmapping working in Godot for a demo. It turns out the current lightmap workflow is quite broken. I've spent several days trying to work around bugs in the version of xatlas godot is using, but with no luck, so I'm now going to resort to exporting a mesh from godot, unwrapping in blender, then reimporting back into godot.
2019-09-24 16:49:32 +02:00
2019-10-14 16:43:12 +02:00
This means a slightly more complex workflow, but it does potentially allow baking lightmaps in blender which should lead to a nicer result. The downside is that I won't have a bake for dynamic shadowing as objects move through the level.
2019-09-24 16:49:32 +02:00
2019-10-14 16:43:12 +02:00
It may seem strange to be spending so long getting a demo working, but getting a usable workflow is imperative both for testing, and for tutorials.
2019-09-24 16:49:32 +02:00
2019-10-14 16:43:12 +02:00
The standard non-baked dynamic lighting workflow is mostly working (if not perfectly optimized), and that may be preferable for most people on desktop, but it is my intention to create a highly optimized system that will run very fast on mobiles as well, allowing fast action 1st person shooters etc.
2019-09-14 13:10:48 +02:00
2019-09-11 21:23:17 +02:00
## Roadmap
* Auto conversion of named room spatials and portal mesh instances to LRoom and LPortal DONE
* Auto creation of mirror portals DONE
2019-09-12 17:29:01 +02:00
* Recursive determine visibility DONE
2019-09-12 21:14:52 +02:00
* Prevent memory allocations (use pools for plane vectors) DONE
2019-09-13 20:26:52 +02:00
* Add support for objects moving between rooms - cameras, players, physics etc - DONE
2019-09-15 17:25:43 +02:00
* Refactor code, moving LRooms and LPortals outside scene graph DONE
* Cleanup code, Optimize DONE
2019-09-15 20:33:15 +02:00
* Handle special cases (multiple portals views into room etc) DONE
2019-09-16 16:38:52 +02:00
* Optimize non-moving statics DONE
2019-09-17 15:31:37 +02:00
* Optional convex hull bound for rooms DONE
2019-09-23 12:22:47 +02:00
* Add debug graphical view of portal planes DONE
2019-09-23 13:32:09 +02:00
* Add debug graphical view of room bounds DONE
2019-10-14 16:43:12 +02:00
* Dealing with shadows from objects outside of view PARTIALLY DONE
* Building baked lightmap workflow ONGOING
2019-09-17 15:31:37 +02:00
* Bug fixing / testing ONGOING
2019-10-14 16:43:12 +02:00
* Shadow caster optimization
2019-09-16 16:38:52 +02:00
* Closable portals
2019-09-15 17:25:43 +02:00
* PVS (primary and secondary)
2019-09-12 17:29:01 +02:00
## Instructions
2019-09-23 08:45:11 +02:00
See [INSTRUCTIONS.md](INSTRUCTIONS.md) and [TUTORIAL.md](TUTORIAL.md)
2019-09-16 16:45:06 +02:00
## 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.