April 7, 2015

The Perfect Tile System - Trailer

Well, it's finally finished! The Perfect Tile System is ready for release! Make sure to watch the trailer at 720p or higher to get the best quality playback and framerate (yes, it is 1080p 60fps native).

February 24, 2015

Types of Displacement




Special shout-out to caner_ozdemir for his UE4 Iterative Parallax material setup... and making me aware that such a method even exists! For just 12 more instructions, you can iterate the parallax displacement 5 times and get a much cleaner result. I can easily see this method becoming the go-to method for displacement with modern mid-grade and even low-end GPUs.

February 10, 2015

Big Update!: Parallax Occlusion is now fully featured in the Perfect Tile System!

In UE4's forums, user Ehamloptiran shared his custom Parallax Occlusion HLSL code with all the forum goers. Since this project's beginning, I was excited to get parallax occlusion integrated, but there was no way to do it and keep the shader clean. Thanks to Ehamloptrian, I was able to use the code in my project in a very novel way. In order to obtain separate parallax tiling for the Tile Map, I simply had to divide the UV result of the parallax occlusion code by the TM tiling values. This way, I only need to run the occlusion code once. I will be implementing this novel solution through the basic parallax as well and see if it saves the instruction count some more.

There are some things to work on, though: silhouette clipping, and the possibility of bringing back freeform tiling. But in the meantime, you may go ahead and enjoy these screenshots.


February 9, 2015

Polys, Normals, and Tessellation

A simple visual showcasing the differences between rendering low poly geometry, normal mapping, normal map+tessellation, and a high poly model. Normals take care of lighting and shadows, but not silhouette. Tessellation smooths out the silhouette, but if you stick to low-poly normals and don't use a normal map, then the lighting might not smooth out the way you expect. But tessellation together with a normal map replicates a high-poly result to the tee. While it is a tiny bit more difficult to render as it uses a more complex pixel and vertex shader, it will still handle LODs much better than a high-res output and save thousands of polygons.


February 8, 2015

Perfect Tile System - Rewriting and More Rewriting...

For the past few months, I've been working on a shader project in UE4 to handle detail tiling with a grout system. I'm also putting a lot of work into making a pdf document, solid presets that demonstrate a variety of different features, and streamlining the system as best as I can.

Check out updates for this project here!: https://forums.unrealengine.com/showthread.php?50022-Perfect-Tile-System-Do-you-guys-want-this-for-the-Marketplace

One of my biggest setbacks was my incessant need to keep adding features to this thing. Originally it was just a basic multiplication and grout system to handle tiles and some tiling features, but it ballooned into a glass shader, a frosted glass shader that mimics interscattering, a dual-tile algorithm with a controllable midpoint value, texture maps (and dual texture maps), parallax displacement, falloff blending, etc, and it's just gotten crazy. So much so that certain new features required a complete rewrite of the shader's blending setup... multiple times. Upon release, it might as well be called the Perfect Tile System 3.0: nearly every single piece of code would have been written 3 times. And it's still not completely "perfect."

Initially, I used spider web branches to control how toggling different options affect the system. This makes sense if there's only a couple features to worry about. But I revamped all the toggling to feed into each other down a line. The end result is much cleaner code that allows me to add features and make changes to the system rather easily, but getting to that type of solution can be difficult to figure out: the order must be tested under as many circumstances as possible to avoid bugs or rendering errors.

For anyone following, I appreciate your patience with me and this project. I will strive to create the best product I possibly can. Here is my current to-do list:

  1. Finish cleaning up the shader
    1. Textures and Glass features combined are currently untested: may be unstable (medium priority)
    2. "Lerp" functions should be replaced with "If" functions/parameters and be tested for optimum performance (medium priority)
    3. Debug scattering map checkerboard pattern blows out colors and does not cancel out wrong parameters (low priority)
    4. Dual tile implementation is very broad, but not universal, and more can be done with it (low priority)
    5. Clear Coat implementation is very basic at the moment (low priority)
    6. Roughness implementation is good, but more could be done with it (low priority)
    7. Specularity currently has no implementation. This saves on instructions, but more can be done (low priority)
    8. AO implementation is OK for its purpose, but it's pretty basic at the moment (low priority)
  2. Asset Management
    1. Remake all instances for compatibility with final shader
    2. Delete unused assets
    3. Size management
    4. Fix redirectors
    5. Package project for development
  3. Ensure guide is updated to reflect recent changes
    1. Dual tile algorithm midpoint
    2. Parallax options
    3. Shader organization
  4. Package project for development
    1. Quick Test open
  5. Demonstration/Advertisement Video
    1. Music
    2. Narration
    3. Matinee Setup
      1. Live Demo
      2. Matinee Recording
    4. Final Editing
  6. Screenshots
  7. Submit!

January 24, 2015

Stylized Waterfall

This is a particle VFX I made in UE4. A community member by the name of "Anadin" posted a game project called "Bears Can't Drift!," and I wanted to show them one way to use more complex particles while staying within a cartoony, stylized world. This effect uses tons of GPU particles to simulate flowing water and solid mist as well as 3D mesh clouds. It also uses a combination of lit particles and unlit particles with reflections to render some nice, realistic effects with as little overdraw as possible. The big clouds and solid round mist effects are less complex than the transparent GPU sprites (transparency is necessary to simulate fast GPU collision).

The GPU particles performing the water effect are spawning 5000 times a second, and lasting for 1-3 seconds. There are on average about 8000 particles shown here at any given time. And because they're all GPU particles, they render much more efficiently than standard CPU particles and collision performs effortlessly.

Altogether, the effect is fairly efficient to render, but visually complex, and within the style of that world.

January 20, 2015

Gametalk Logos

Some users on a game forum site had requested I make a logo with them. I brainstormed some concepts, made a few sketches, and some work-in-progress logos and icons for them exploring different design possibilities. Some were made with their feedback, others were my own concepts. Unfortunately the project fell through, but this compilation of some of the logos shows the progress undertaken to design and refine them. For all the logos, I went for a retro feel.

My sketches tend to be VERY rough, just to get some ideas on paper before committing to a digital design.

Sheet containing most of the design options for the site. Top left shows my personal work-in-progress concept. Top right shows different logos utilizing a pixelated style. Icons in the middle showcase different design styles using the same color scheme. Ultimately, a style was not chosen. The bottom logos were a third concept requesting the logo mimick aspects of the Screw Attack logo.

One user requested a logo based on a hexagon shape. It was popular with users, but it felt too dissonant for my tastes.


The logo I preferred for the site. A good balance of  curves, straights, and strong complementary colors. The concept is based on graphics in the board game Sorry! and evokes a similar sense of retro styling with bold shapes.