Vimukthi Weerabahu
2022 September

MCProm

Used my knowledge of GLSL shaders to contribute to this awesome party thrown in Minecraft 1.18.2.

I was brought on to this project to add decorations to further sell the idea that this truly is a one of a kind party. To accomplish this I worked on 2 decorations. Both heavily depend on GLSL shaders added to the resource pack (which gets loaded by the Minecraft client) and a server-side Spigot plugin written in Java.

In modern versions of Minecraft (26.2 being the latest when writing this) many decorations are almost trivially achievable but unfortunately this wasn't the case for Minecraft 1.18.2. Additionally this event needed to be readily accessible. Therefore client-side requirements needed to be minimized and various popular client configurations needed to be considered such as Optifine, Sodium and Apple silicon to name a few.

The official livestream of the event.

Lasers

0:00

Clips from @JellyBean and @TalonMC.

The lasers, as simple as they may look, are actually quite feature packed;

Execution

The most straightforward solution, using a block shader (rendertype_solid), wasn't viable as clients using Sodium will not load this shader. Using entities wasn't viable either because the maximum entity render distance is prohibitively small for this purpose. The solution that was chosen involved using a very unconventional item / shader combination which fit all the requirements.

Sky

0:00

Clips from @TalonMC.

The sky is composed of multiple layers of effects;

The layers move at different speeds to give the illusion of distance by simulating parallax. (Though in reality parallax wouldn't take place here the effect looks good nonetheless.)

Execution

It started off with attempts to incrementally improve the default night sky for the event but this lead to a dead end as only so much can be achieved with this approach. In search for more customization I discovered a way to gain control over the entire sky.

A debug shader demonstrating the full control of the sky.

From this point onwards adding the rest of the effects was relatively straightforward. Out of all the effects the twinkling stars were the most difficult to implement since it required me to UV map a sphere (the sky) procedurally.

All possible positions for the twinkling stars in the sky.

There were also performance issues in the initial implementation which were addressed by switching out an expensive noise function to a cheaper, though slightly lower quality, alternative and using a texture to draw the twinkling stars instead of procedurally generating it in the shader.

Related

All work

Contact

Emailme@vimhax.com

GitHubVimHax

LinkedInVimukthi Weerabahu

X / Twitter@VimHax