It has been two months since my last devlog in January. I didn’t do any devlog in February due to laziness so there is not much to show on that month. I try to figure out what makes me feel lazy to continue this project, and I figure out that it is tough to debug and test the feature that I implemented. I always know that I need a better editor to do testing and debugging but unwilling to invest some time on it because it doesn’t contribute anything to the visual. Something that I learned is that debugging facility is an essential part of the development even though you might throw it away and it is not part of the end product. After I implement the editor, doing this project start to feel enjoyable again.
So here is the list of things that I want to talk in this devlog:
– Editor Improvement
– Point Light and Spotlight
– Glow Postprocess
– Area Light / Emissive Material
Editor Improvement
With the help of Dear
Another thing I implement is a basic entity tree and manipulator for moving the entity in the editor (I use ImGuizmo for the manipulator). I used to change the position of the model in the code and recompile the code. Being able to drag and drop the entity in my editor feels really refreshing.
Spotlight and Point Light
Spotlight and point light in Soul is pretty standard. Similar to directional light, spotlight, and point light will allocate some texture regions from the shadow atlas to do shadow mapping.

As you can see in the image above. There are visible white seams in the shadow area. This happened when a point light samples the shadow in the edge of each cube or at the border of each texture region. When we do PCF filtering, we need to sample the neighboring pixel. Because we allocate each faces of the cube randomly in shadow atlas, we need to be careful. One pixel left on a cube face is not the same as one pixel left in the shadow atlas, specifically at the edge of a cube face. I expect this to happen when implementing the point light. Implementing the correct solution is quite hairy, so I kinda skip it. This is definitely future work for me to make point light cast the
Glow Postprocess
Glow in soul engine


Level 1 Level 2 Level 3 Level 4 Level 5 Level 6
Above is the image of Gaussian blur of different levels

This is something that is quite easy to implement, yet it gives a lot of wow effect.
Area Light / Emissive Material
Personally, I think this is the most exciting feature that I implemented recently. One thing that is nice with Voxel GI is that it is easy to implement area light, albeit not accurate. Area light in soul engine is just an emissive material, so it can be any arbitrary shapes and volumes. Adding area light is as simple as adding the emissive value into the voxel during ‘voxel light injection’ pass.
Showcase



By now, I am sure you can guess how much I like glow. Okay Thanks for reading.
Reference
- Distance and angle attenuation function for point light and spot light follow google’s filament and frostbite course note
- Voxel cone tracing for area light. I get inspiration from here.
test