We are excited to announce Solar Fusion Software is working on a new partnership with more details coming soon. Also our contact page has been updated so it is more human friendly.
Wednesday, August 12, 2026
Tuesday, May 12, 2026
Machine Learning
After seven years of development PlumeriaSC 4.8 now supports machine learning! Currently we are using supervised learning with the k-nearest neighbor algorithm but it can also be used as reinforcement learning. One thing that we do not allow is for PlumeriaSC to train itself on people that play our games. All learning happens in the PlumeriaSC project files. Once the project is generated as html the training data is set and there is no code to create new training data. Since machine learning is an interesting subject I thought I would share my experience.
You may have heard that the coolest machine learning algorithms use neural networks, however, they are usually the worst place to start. The problem is when not used correctly they usually take too long to train if ever. So where is the best place to start? The first thing to know is that there are three main types of machine learning algorithms supervised, unsupervised, and reinforcement learning.
Supervised Learning (KNN is a good algorithm for this) is where the data is labeled then new data is added and labeled according to the original labeled data. An example would be a new color is presented and the computer has to figure out the closest color based on the labels it already has.
Unsupervised Learning (K-Means is a good algorithm for this) is where you group data into clusters. An example would be compressing an image file by finding similar colors then using the same color for them.
Reinforcement Learning (Q-Learning is a good algorithm for this) which is probably the most exciting one of the bunch. An example would be a game with a grid that needs to score different parts of the map whether they are good or bad. Variants of Q-Learning have been used to find the best action to take in a Mario game.
Wednesday, March 18, 2026
Raytracing the Next Week
So after trying out my coding skills with the "Raytracing in One Weekend" book I mentioned in a previous blog post, I tried the second book in the series "Raytracing the Next Week". One big reason I wanted to try the second book was because I wanted to learn how to make smoke and fog. Unfortunately I never got either working. I was, however, able to make a very noisy "Cornell Box" image below. Finally in PlumeriaSC 4 news I implemented a physics engine based on signed distance fields, although, there are still some difficult bugs to work out.
Friday, December 5, 2025
SDF Physics and More
Well the Holidays have come and as you may know I have been working with Physics and Signed Distance Fields (SDF) for a while. First came the SDF Planets for Galactive Space Junk 3 and more recently replacing sphere and plane geometry primitives with SDFs. Now I am happy to announce I have developed a formula that seems to work with most convex SDFs and even some concave SDF shapes too. So why SDFs? Most SDFs have easy lighting capabilities called "normal vectors" and as the name implies they measure distances which are very important for physics engines. Check out a rough draft of the new SDF Physics Engine. Finally I am working on a video of the new features of Plumeria 4.8. New features include Constructive Solid Geometry (CSG) meshes, a new lighting engine that includes spotlights, easy to use fog, and better mouse selection that works on all devices and all shapes.
Friday, July 25, 2025
ThreeJS Water
I just added a custom shader I found in ThreeJS for a water effect below the Solar Fusion Software logo. ThreeJS is used for 3D graphics on the web and written in JavaScript which encapsulates 3D WebGL shaders that are more difficult for some developers to write. I honestly prefer writing 3D shaders for Raymaching and Raytracing in WebGL but it was interesting to see the features in ThreeJS instead of WebGL shaders. Enjoy!
Wednesday, June 11, 2025
Raytracing in a Week
I have just finished some graphics projects and I want to point out how cool raytracing and raymarching are. If you are not familiar raytracing is a 3D technique where you model light rays and test their collisions with a scene per pixel. Raymarching is a 3D technique where you make increments of a light ray and test to see if it hits any thing in a scene. I know both of these approaches pretty well but I found an online book for raytracing called Ray Tracing in One Weekend that gave me a great foundation for 3D graphics. The book starts out with Larmbertian lighting which is really just a shaded sphere. Next Metal spheres then (my favorite) Dielectric spheres which look like glass. I will admit it took me more than two days to finish the book but the code was written in c++ and I converted it to JavaScript. The image below is generated from my code based on one of the last chapters (the big sphere in front is Metallic, the sphere behind it is Dielectric, and the smaller spheres in front are Lambertian.
Friday, January 10, 2025
Savor the Flavor
There is a new twist to the Donut Pong game. Now you must battle the computer to acquire new donut flavors by notching a net score of 0 to 2 = glazed, 3 to 6 = chocolate, 7 to 11 = strawberry, 12 and up = mystery berry flavor. For instance, score 3 more wins than the computer to see the glazed donut turn into a chocolate donut and 7 or more for strawberry. Also, this game is the first to use the new signed distance field physics engine from PlumeriaSC. Finally I came across a cool JavaScript programming course on YouTube. After watching the series myself I highly recommend these videos no matter what coding level you are at or programming language you are using.
.png)
