This is a concept I made for GameCo for a 2D version of Neon Dream. It was for HTML5, I did all of the code and art on it and most of the design as well. Sadly, put on hiatus because of covid.
A couple of portraits I made for a 2D version of Steve Aoki’s Neon Dream (SAND), now on hiatus due to covid. I had to submit it a few times for approval because I short-changed him on his hair. You can see the original hairline on the bottom and the approved version on the top one. Sorry about that Mr. Aoki!
It’s been about a year since I released the Hydroform Ocean System on the Unity Asset Store. I’m pretty happy with how it’s done; it has good reviews and sells very steadily month after month.
I’m hoping to get underwater rendering working this month, but haven’t made as much progress as I’d like just because of other housekeeping tasks that I’ve had to take care of. My schedule is clearing up a bit though so I’m excited to get banging on it again!
Oh, and it’s on sale this month, 30% off!
Wow, it’s 2018, time to update this thing! I had a good year in 2017, one of my favorite projects was working with GameCo and Steve Aoki on Neon Dream. It’s an infinite runner for skilled-based casino consoles. It’s a brand new market and a pretty interesting space and unique design challenges.
I’m pretty excited for 2018, I’ve got some Hydroform updates coming, and I’m going to be prototyping various visual/game concepts for a maze / trench run type of game that I’ve been thinking about.
I’ve found some time to finish this thing up. Really close to release now!
Got shoreline working with refraction and foam.
This is the third pass - deep water foam, in action. I’m not totally satisfied with it, but I’d have to do a lot more work to really improve on it and I’ve got to get to many other things!
Latest renderer in action
Ocean rendering part 2
I’ve improved both the visuals and the rendering speed of the renderer since the ‘first pass’ post. Initially I was using projected-grid rendering and doing a lot of work in the pixel shader (noise calculations, sampling 3 heights to get the normal,etc). It looked good, but a bit noisy/gritty since the pixel shader couldn’t take advantage of sub-pixel sampling that can be achieved with texture lookups.
I moved away from projected grid rendering to ‘patch’ rendering where I essentially draw a grid of polygons in front of the camera, and then fade the waves heights to a flat poly that extends to the horizon. This gets rid of the artifacts that were appearing in the mid to far distance when the camera moved in the projected-grid system.
The next big change was to offload much of the pixel shader work to texture lookups. This would have the visual benefit of sub-pixel sampling and mipmapping to reduce visual noise and a large reduction in pixel shader render time.
To generate the texture data, I essentially render out a height map of the repeating perlin noise function + gertsner wave calculation that the vertex shader uses. The pixel shader matches up the texture scale to the waves that are generated in the vertex shader, and scales it down/rotates it appropriately for each octave of waves that are generated. I might do another post on this as I recently had to do another pass on this code to get a CPU-based height lookup to match up with the GPU noise function.
An actual height lookup texture is below, it’s not super high quality and I had to try many seed values for the very simple noise hash before it spit this out. It works well enough that it’s not noticeably worse than higher quality noise that I’ve used.
Lastly, I added specular highlights and a very simple sub-surface scattering effect that isn’t quite accurate, but is effective anyway - see the bottom-left for some sss overkill:
It’s been a looong time since I’ve last posted! I have made some progress with DieselWars, but largely have been taking a break to pursue some shorter-term projects. One of them that has turned out to be promising is an ocean renderer that I created to test out the Unity Asset Store market. Above is the first pass prototype that I created to see if I could create something that looks good in realtime.
The realtime water is a continuation of the work that I did on the non-realtime game, Extrasolar (shown above). (Extrasolar is a ground-breaking experience and it’s free so you should check it out here!). I wrote about how I made the water for it here. For the realtime prototype I kept with the projected grid technology that I used on Extrasolar, but changed the wave code so that it is more complex and turns noise into Gertsner waves rather than using almost pure noise like I did on Extrasolar.
The problem with using a projected grid with complex high frequency waves is that visual artifacts begin to appear when rotating or moving the camera. Even with a very dense grid these artifacts are pretty evident. There are ways of mitigating the artifacts by having the grid attempt to track with the camera so that the world is sampled roughly in the same place even if the camera pans. I experimented with some other ideas though and came up with something that works better for what I’m trying to do. I’ll post more about it in part 2.