Breaking News

Great VR Portal Resources

I have been asked multiple times already if I can share more code from my project for the parts that handle the portals. While I love to write about them and explain the concepts, I am really certain the actual code is not something that people will appreciate as it is highly specific to my setup. There are so many advanced things one has to cater for: moving opponents, navigation, lights, performance…

You have to imagine that this is not the “Hello World” stage anymore and most bigger projects beyond that stage will be hard to understand for the uninitiated. Many pitfalls have been incorporated, special cases, hardware-specific fixes etc, cluttering the picture.

This is why I think it makes more sense to share what actually put me on the journey, helped me along the way or also just plainly inspired me. So without further ado, here an (unsorted and continually expanded) list, broken into some broad categories:

Getting An Overview

Sebastian Lague’s excellent intro to render texture portals and some advanced concepts
Non-euclidean world engine
Great intro to stencils
https://aixr.org/insights/how-shadow-points-portals-were-created-oculus-quest/
Shadow Point write-up
John of Unseen Diplomacy on stencil portals

Starting To Code

https://assetstore.unity.com/packages/vfx/shaders/3d-game-card-146177

https://assetstore.unity.com/packages/tools/particles-effects/pocket-portal-vr-85657

https://github.com/noisecrime/Unity-StencilPortalRoomCube

https://github.com/Feddas/VrPortalDoor

https://th0mas.nl/2013/05/19/rendering-recursive-portals-with-opengl/

How “Out Or Dead” Does It

Games That Use It

I have full separate blog post show-casing such games!

Getting Inspired

There are many super creative and talented people out there who do amazing things. Here just a few of them. If you have more, leave a comment!

Unity Tech Demo
Portal Holes
Self-Collisions
https://twitter.com/revoider/status/1270460252039909376?s=20

Leave a Reply

Your email address will not be published. Required fields are marked *