It has been a while since I posted any screenshots or updates. Rest assured, I am working on the engine constantly and have made a lot of progress, but mostly foundation work. A solid foundation leads to a stable and easily made future. In a previous company, long long ago, for the first time, I was failing a project. It turned out to be a very simple oversight, and had I seen that one detail, my results would have been finished. But no one, including myself, knew that at the time, so all I had to show 3 days past the deadline was a black screen, making it seem as if I had done nothing at all.
The CEO called myself and my replacement programmer into the meeting room where we discussed our different approaches to getting results. He said he goes straight for the goal. He gets a result on the screen and worries about cleaning up the mess later. He would use “new” to create a bunch of objects but would not immediately add the “delete” necessary to delete those objects, with the reason, “I don’t even know if this will work, and if it doesn’t I have to remove a bunch of code and that means more work. I’ll add the delete’s when I know this will work.”
I protested, saying that he was setting himself up for bug farms and memory leaks. It was clear to me then which of us had a future in programming, but in this case the CEO gave him the project and was satisfied at seeing a result within 2 days. I am sure he would not have been so content could he see the future, because my replacement programmer was ultimately 2 months late at delivering the final product, and the result he delivered was filled with bugs and memory leaks. After failing project-after-project, he was fired, while I was growing in ranks, eventually becoming senior programmer.
I am very excited about the results I will be able to show soon. I have invented a new form of colored shadows which allows objects to be properly shadowed while between panes of glass. Existing colored shadow algorithms work by making a color map along with the depth map, from the light’s point of view. This gets decent results, but allows only one color for the shadows (per light). So if you have a red pane of glass and a blue pane of glass overlapping it, the shadow they create is purple, but only purple. If a ball were placed between the two panes, it would still receive a purple shadow, when in fact it should be blue (being above the red pane of glass, being under the blue pane). My algorithm also allows casting shadows on transparent objects from transparent objects. The red pane of glass would have a blue shadow cast over it from the blue pane of glass, and a black shadow from the ball. All engines I know today allow casting of shadows onto transparent objects from solid objects, but not from transparent objects.
My algorithm is fast and highly scalable. It has many early-exits in case it is taking too long. In most cases it is equal in speed to existing colored shadow algorithms, but in scenes with complex glass structures such as a glass maze, the early-outs produce similar results without slowing down the game. In addition, it is compliant with all existing shadow-mapping algorithms.
I will be publishing a white paper on this shadow algorithm as soon as I can. I am hoping within a month. However there may be delays. Some people may be aware that I am acting on Japanese TV, in addition to my full-time job as the CTO of a game company. Recently my acting career has started to take off. Last week I was in a big Japanese drama called 蝶々さん (Miss Butterfly) named after the famous opera 蝶々夫人 (Madam Butterfly) along with Ethan Landry—a rising star in America—and some big stars in Japan such as Aoi Miyazaki (pictured in the link). This weekend and next I have several more acting jobs lined up. Weekends are where I get to do most of my work on the engine, but lately I am having fewer and fewer of them to myself.
In any case, the engine is still very much alive and active. I will have something to show as soon as I can.