screenshot
screenshot
screenshot

Blossom

Blossom is a relaxing game where you play as a bee, with the goal to collect pollen to deliver back to your hive and revitalize the environment.

This school project started off as a graphics focused custom engine project for the first two months in collaboration with 4 other programmers.

For the other two months, we worked together with artists and designers in a team of 11 people to use this custom engine to create the game Blossom.

role icon

Graphics Programmer
Tools programmer

team icon

5-11 people

time icon

4 months

platform icon

Windows
PlayStation 5

platform icon

Custom Engine

platform icon

ENTT
OpenGL

FastNoise2

For our project, we got given the brief to create a custom engine for a nature simulator game. Since most of our team's main interest and skills were in graphics programming and we had limited capacity, we wanted to spend most of our resources on graphical features and we very quickly decided to take a procedural approach to the level editor.

To achieve this editor, I worked on integrating an existing noise editor into our custom engine. Together with the drag and drop level editor GUI another team member made, this noise editor allowed us to create noise maps with ease directly in our engine's editor, save them and drag and drop them into the level editor for quick iterations on our level. These noise maps were used to for example elevate the terrain or as a density map for placing vegetation and other props.

The noise editor itself was only ported into our engine, but was not written by me and can be found on the GitHub repository linked below.

github logo FastNoise2

Bloom

Throughout this project, I mainly worked on post processing effects for both platforms PC and PS5. One of these effects I implemented was Bloom.

For this implementation I threshold the main render pass' output to get the highest brightness values. These are written into another render target and in the blur pass blurred using a 5x5 gaussian kernel. This pass I first implemented using vertex and fragment shaders on PC. Later when I learned how to implement compute shaders, I implemented the gaussian blur pass using a compute shader pass instead on PS5. The pseudo code for this pass can be found below.

Pseudo code snippet of the bloom's gaussian blur compute shader

Tone mapping

Another part of the tone mapping, mapping the render pass' HDR values to the final render's SDR values. This description is still work in progress.

Code snippet of the tonemapping fragment shader