June 12, 2015

The Perfect Tile System - Released on UE4 Marketplace! Development Priorities.

UPDATE: 8/7/2015 - I fixed a bug that caused some textures to not tile properly with parallax mapping. The fix also allows materials using Parallax Occlusion to retain all local tiling adjustments. I also have some more toggles for the performance-minded folks: you can toggle the special metallic shading on and off. On, and metals appear brighter around the edges with an added sheen. You can also toggle between simple and complex gamma correction. Simple uses a multiply node for a power of 2.0 and saves 3 instructions. Complex uses a power node for a power of 2.2, bringing colors closer to sRGB standards, but uses 3 more instructions. The flexibility just got a whole lot better!

Stay tuned for further updates!

UPDATE: 7/6/2015 - I have just finished an integration of roughness maps and a variety of randomization settings. Tiling can now take place in world space as well, for perfectly seamless floors, walls, and ceilings across multiple meshes without the need for perfect UVs. And custom UVs are now utilized for global scaling within the system (unfortunately, this optimization was performed under the hood all along like I had hoped). Other improvements also took place, mainly to fix minor bugs and streamline the pipeline. The improvement are not over yet, though. I still need a bit more time to develop a good solid update, which includes rewriting the user guide.

I have squashed out the ability to swap linear and sRGB assets from the system. Because sRGB does not follow a standard exponential curve, it will be impossible for me to convert it in any reliable way to take advantage of the dual features. I am thinking about including sRGB tile maps as an option when dual color/roughness features are not required, which would save instructions and look slightly more accurate, but both sRGB and dual surfacing are not seamlessly compatible with each other.

---

So, The Perfect Tile System is finally up on the Marketplace!

https://www.unrealengine.com/content/8b8ae16ae659425384a6caaafc36212a

This is great news, but it's not all over yet! Listed below are some plans I have for the shader system, including both optimizations and newer features. Please comment on this blog for features you'd like to see. I will update this list:

High Priority
  1. Inclusion of Roughness maps for surface detail (requires full-scale integration with the tile distortion and parallax features).
  2. Switch between linear and sRGB assets (the dual color algorithm makes this very difficult).
    Unfortunately, swapping between linear and sRGB assets is impossible in the engine. Instead, I use a power of 2.2 on linear assets, or 2 for the optimized method.
  3. Tiling optimization using custom UVs for global scale.
  4. Toggle world-space coordinates (must also work with parallax and texture tile distortion).
Medium Priority
  1. Colored Tile Maps (easy to implement for linear color, difficult for sRGB).
  2. Optimum Map that combines TM, metal map, glass map, and scattering maps all in one texture. Parameter masked with RGBA values to eliminate the need for extra draw calls with heavy TM materials.
  3. Optimum Map 2 for displacement, roughness, and custom AO.
  4. Special tiling for bricks and panel flooring to convert pixel TMs into more complex TMs, uses instructions but saves texture space and time in bitmap editor (parallax makes this difficult).
    While special tiling features have now been added, including the tile randomizer and world coordinates, the brick tiling method produces unpleasant results for too much instruction cost. While there is some work required to make a manual brick TM, the work is well worth the hassle when it comes to optimization. The included TMs work for 65,536 individual bricks. I may make a larger texture in a newer update.
Low Priority
  1. Detail texturing (requires another pipeline to be added. Not too difficult, just time consuming).
  2. Tile randomizer (must also be compatible with texture tile distortion).
  3. Simple gamma corrector to save instructions on colors (but will result in less accurate colors).

No comments:

Post a Comment