Gamma Engine BETA 1.2

1,817
0
Published 2022-05-10
NOTES FROM ME:

I think this project opens a gateway for more interesting stuff, as does it approach the limits of Scratch.

Once again, this was pretty rushed...

And wow this is laggy...

I wasn't sure about whether I wanted to share this project as a new update or a snapshot of the update but since I planned to make to new update on shadows, and I implemented shadows already, I will share this as a new update. As a result, there are a bunch of bugs involving portals. Shadows are also currently disabled because they are incredibly laggy.

NEW FEATURES:

This project now implements a shadowing algorithm which I call the "cookie-cutter shadowing algorithm". It works by using the planes of the faces of a shadow volume to partition a chunk of space. Then, it takes this chunk of space, which is the shadow, and disables lighting with that specific light source.

Another feature which I am in the process of implementing is the "clipping portal". These also use space partitioning to create some specific visual effects.


BUGS:

There is still a skybox bug which has to do with a unpatched singularity of the quaternion swing-twist decomposition function.
Also, the lens flare does not get obstructed by objects when it is supposed to. Some simple raycasting will probably fix that.
As I released this, I noticed that colored lights do not overlap properly in multiple light source shadows. I thought I fixed this but I guess not.
"Clipping Portals" still have a lot to improve on...

IN THE FUTURE:

Although there was not really a single direction in which this update took, I'd say it unlocks pathways for much more to do. I am planning on implementing volumetric shadowing/lighting using raycasting for the next update.

CREDITS:

The improved BSP(binary space partitioning) algorithm uses a triangle cutting method by @Vadik1. The code itself is slightly based off of their code, except it is pretty much original. You can find and compare their code here:
https://scratch.mit.edu/projects/277701036/editor/

The Bezier code for camera paths is (almost) directly taken from @gtoal's project:
https://scratch.mit.edu/projects/131769048/

Quaternion look-at code from Unity forums. Compare with @ggenije's code:
https://scratch.mit.edu/projects/470670022/

Much of the collision detection-response code comes from:
https://wickedengine.net/2020/04/26/capsule-collision-detection/

Quaternion swing-twist decomposition code and derivation come from:
http://www.euclideanspace.com/maths/geometry/rotations/for/decomposition/index.htm

Song is "Wait" by C418