The Perfect Tile System - New Official Thread

OK, so, Unreal is acting pretty weird with the optimum texture/displacement thing. I basically had to manually recreate the nodes for parallaxing in the shader because it wouldn’t accept any potential solution through material functions. Believe me, I tried everything! Because of that, I had to move out all of the parallax operations to the back end of the system. What this means for you is A: making any changes to the shader will now be much easier because all the parallax is moved to the side, and B: you can select a channel for displacement maps in a packed texture. Also, you can now change the reference plane for all parallax materials! Just another benefit from the hard-wired method. If anything, this change should be more optimal than the previous method, but if you guys don’t see that as being the case, please let me know. Whenever I make changes to the main pipeline, I notice shader complexity shifts a bit, some materials get cheaper, others get more expensive. This method is required to use packed textures, though.

There’s a lot of weirdness even with this hard-wired node method: if you use iterative parallax (either 3 or 5 samples), the mask parameter will disappear from your options. It still performs the mask as it should, it’s just strange to have the option removed. If you need to switch channels, just uncheck “Use Iterative Parallax,” effectively scaling back to the basic 1-sample parallax method, and set your displacement channel. Then check iterative parallax if you wish to use it, and everything should work fine. Unfortunately, parallax occlusion uses a 4-vector “color” value to select the channel, so if you use parallax occlusion, you can’t use the mask, you need to use the “color” value to set it. Until Epic fixes the shader compiler, or until I learn HLSL, there’s nothing I can do to make single-channel parallax displacement any simpler.

I also added a POM shader complexity debug option. The material instructions for POM vary wildly based on how many passes you have and your displacement map. With this tool, you can optimize POM shaders for mid-to-low-end PC platforms. Like I said, the new engine handles POM spectacularly!

Aside from that, I also figured out a procedural method to handle the roughness seeding… only to find out it costs 5 more instructions than the old method. If you are working on Open GL or PS4, you can use this method to save one texture draw call and some texture memory (for a 2-pixel texture, lol), but for most applications, the 2-pixel texture method is much better.

It will be a while before the home content is good enough to really showcase to you guys, it’s seriously a major WIP, but I’ll see if I can get these updates rolled out soon so you guys can just have it to gawk at. 4.11 really improved how POM is handled, and I can’t wait to get it to you! Thank you for your patience :slight_smile:

EDIT: I checked, and the new pipeline actually removes over 20 instructions from materials using the iterative parallax method, and a few instructions from most of the presets. So, all parallax methods are now much cheaper than they ever were before!

Hey guys! Thank you so much for your patience! So, I’ve done some checking, and the new parallax pipeline drastically reduces instructions for everything: all materials will be anywhere from 1 to 22 instructions cheaper.

But that’s not all! I’ve been working pretty hard on a map to demonstrate the Perfect Tile System in a more practical manner: a house. All you Arch-Vis people out there, listen up! There will be blueprints specifically for Arch Vis, new textures, and scenes to pick apart from. Unfortunately, I need to get the 4.11 updates out soon, so I can’t get everything finished before the next update, but here’s a sneak peak of what’s to come:

2da621c7481dbd0551843f7e9cd87cf2a868ef40.jpeg

OK, I have some awesome new pics from the home content at this point and time. At this point and time, the home map is not complete, but later down the line it will be built up. Right now I have a functioning light switch and controlled lamp. You can use any number of switches to control any number of lamps. I also have a paint shader for wall art, a glass shader, a rocking chair, table legs, and a very basic grassy landscape. Over time, this scene will be built up to showcase different aspects of the Perfect Tile System. Enjoy!

d8600bcde2d6e698bf74dce231271c3e4d52c2ac.jpeg


8c49865ac34d8cf37bac499c67ece8d0481e98de.jpeg
5535858c1484c8929c313e2c9b1d15242a136c1c.jpeg
73bc0bfa6dacfd8dfe1cf576f787e20deb4c98c0.jpeg
326aac4115405ff7ea0482d980945336cd9b5015.jpeg

Wow, this thread is ballooning!

ALRIGHT, so I just finished putting the updates together and sending it to Epic. I will make a post later breaking down everything that has been improved so far. I should say that this system has really blown out of hand with the scope, and the old $15 price tag does not account for all the time and effort put into everything you’re getting with this package. The price will increase to $25 to cover the new content, new features, and all the work put into optimization. I can now say that the system is fully optimized for PS4.

This is a minor improvement, but I now have parameters for metallic rendering and clear coat blends. This is useful to give a metallic sheen to your materials, and lighten the coat. I used these parameters to make dramatic improvements to the Lacquered Mahogany preset.

9019a96bc21a7b7e28e95f2331ac55d613f5f283.jpeg

OK, all the updates for 1.2 with UE 4.11 just rolled out yesterday! I posted a video at the top of the thread detailing all the major changes! Here is a list below:

  • Home map and home content! - A home map has now been included with the Perfect Tile System! While the home is in a basic BSP state right now, there are some home-related meshes including a vase, rocking chair, and glass dining table.
  • Light Switch and Controlled Lamp Blueprints - Architectural visualization folks can now make use of a blueprint to toggle lights on and off. The system can be configured for one switch-one light, multiple switches-one light, or multiple switches-multiple lights.
  • 4.11 engine optimizations to materials containing Parallax Occlusion: custom nodes now compress more efficiently, preventing the POM calculations from running multiple times in the same material. Shaders that used to cost 350 and 375 instructions now only cost 235, a savings of 33-40% for all POM materials!
  • The entire parallax pipeline has been revamped for basic and iterative parallax systems. It is now fully expanded in the material next to where the POM is calculated. This runs much more efficiently, saving 3-26 instructions from any materials containing basic or iterative parallax. It also makes additions to the shader much easier to handle.
  • New feature: Optimum Texture Map! This feature allows you to store AO, displacement, tile mask, roughness, and tessellation maps in a channel-packed texture. You can select whatever channel you wish to use! This will save many draw calls and tons of memory on PS4 and OpenGL platforms.
  • New Preset: Advanced Bricks! This preset includes texture maps, normal maps, AO, displacement maps, roughness maps, and tile masks. It also takes advantage of the new optimum texture map feature: the entire material only uses 4 textures and 1 MB of texture memory!
  • Deprecated option not to use Custom UV scaling. By default, all global tiling (and world space tiling) will use the custom UVs in the vertex shader. This saves 1 instruction for all materials and saves big on materials that render with less vertices than pixels.
  • New Parameters - Metallic Amount, and Clear Coat Blend. The Metallic Amount lets you set the metallic properties of a metallic tile set, and the clear coat blend lets you blend between the clear coat and the rough surface underneath. The Lacquered Mahogany preset takes full advantage of this to yield a dramatic semi-metallic surface finish!
  • All tile masks now use an uncompressed grayscale texture setting. This results in a much cleaner finish for tile masks. All masks have been updated to the new standards. The result looks impressively clean on existing textures and presets.

Today, I worked on implementing one of my most wanted features, tile randomization! This uses the Tile Map to randomize the specific tile used on the surface. The algorithm is not perfect: it is currently not possible to combine randomization with parallax mapping, it can’t randomize across the whole spectrum, and there are a lot of nodes that need to be linked up to make sure it works with all the features. But I wanted to test it, and lo and behold, it works! I also managed to get the randomization to work with bricks. I’ll work on this some more and let you guys know how it turns out.

OK, I am working on some updates for UE 4.12. There will be some new features, new assets, and a few new presets as well!

  • Triple Color Algorithm - You can now specify 3 different colors in the shader! The new preset Neal takes advantage of this for a really cool blue, green, and grayscale palette, with triple roughness included!
  • Tile Tilting - You can now randomize a tilt of your tiles in the normal map. This looks great on reflective mirror-like surfaces!
  • The metallic level of the tiles can now be adjusted. You can give a metallic sheen to your tiles. The Sharp preset makes excellent use of this feature!
  • BETA: Tile Randomizer. This is a dream feature that I wanted a long time ago! You can automatically shuffle between your tile masks, textures, and normals! While the PTS was great at removing variation with regards to Tile Maps, now it can even randomize your handmade assets and shuffle tiles across the surface! Unfortunately, this feature is still in BETA because it creates visible seams between tile pieces. This is due to the fact that the mask itself must be shuffled.
  • Large thin tile assets! These were created for an ultra-realistic version of the tiles. The grout is very thin, and you get some sharp normals and a displacement map with the set.
  • 5 Brand new presets! Stonewall - great ceramic tile shader. Neal - really cool triple color backsplash. Sharp - a very dramatic metallic/clear coat showroom set. Cool Sheen - a basic neutral set with tilting. And Tactician - a laminate flooring shader that mimicks wooden panels.

I will process the updates and release as soon as I can! I also made a few optimizations/artistic fixes regarding the optimum metal shading, and some other minor changes here and there. Nothing too fancy. But the presets are really awesome!

4d415b44428cc81033ee59ab3c46505ced4717d0.jpeg
9e407ea421ded4348a431c362595ac961abd04dc.jpeg


67275b8a670dc3d00856d52edfe21d8b3d659ba8.jpeg
253bb0bee4f85e30857b7ae7fbaca9913564482f.jpeg

Alright, so I just finished the newest additions to the Perfect Tile System 1.2.2 for UE 4.13:

  • Anisotropic Rendering! You can now enable anisotropic rendering on metallic tiles! Just turn the feature on under the Features settings, and you will gain access to Anisotropy X and Y, which appear in the Roughness category. The anisotropic effect is achieved through temporal dithering (the same technique used in UE4’s experimental content examples), so the clarity of the image resolves over time. This method benefits higher resolution displays and rougher surfaces in the 0.25-0.35 roughness range. It is fully compatible with UE4’s reflections and physically based rendering, but at extreme settings (anisotropy greater than 0.6, roughness less than 0.25, and not enough screen time to resolve the effect) can result in artifacts. This effect is best seen in a viewport or in game, NOT in the material previewer.
  • General optimizations to tiling. Some materials with features unchanged will run at 1-3 less instructions in this update.
  • Some presets have been updated (mostly color improvements)
  • Seeding techniques have been compiled into a general seeding function that can be used anywhere. The function includes linear and asine distributions using both the procedural and texture lookup methods.

You should see the new update ready to download in about a week. In the meantime, continue to have fun making your own tiles!

Oh, and for those of you testing out this system out in VR, I highly recommend using parallax mapping or parallax occlusion to give your materials some real depth that the normal map alone won’t be able to provide. Take a look at the Advanced Bricks and Sharp presets to see how brickwork and tile can benefit from different forms of parallax mapping. Happy creating!

**1.2.3 Updates for Unreal 4.14
**
Wow, the new update to this engine exposed contact shadows to lights! Since Pixel Depth Offset can now be used correctly with shadows, I’ve made a few changes to some old presets. And on top of that, we have a host of brand new presets all ready to go, taking advantage of the new[er] Triple Color and Tile Tilting features as well as the Large Thin and Herringbone assets! See the changelog below for a list of improvements:

  • Added ability to manually specify texture size for Pixel Depth Offset. This removes a lot of instructions from the automated method.
  • Added 6 new presets: New Terra, Subliminal, Galaxic, Havana, Advanced Bricks (Cheap), and Excavation. There are now a total of 65 presets to choose from!
  • Tweaked colors and features of old presets, most notably Tactician’s colors, and Pixel Depth Offset implemented in the Advanced Bricks and Temple Stone presets.
  • Revamped textures for Advanced Bricks (from 512 to 1024) and Stone (1024 to 2048) assets. Now they look incredibly sharp up close, and on higher res monitors 1440p+!


New Terra - A semi-metallic hexagonal preset with triple colors and roughness. This is a very stylish science-fiction surface for sturdy containers, walls, and columns with a sharp WOW factor!

3c0121ca3c869b8fe5836fbbba843c366f3de1f7.jpeg
Subliminal - A soft subsurface scattering tile with large tile bases. Reminiscent of glowing translucent ceramics, this surface is great for relaxing spa settings and bright lights.

052d4ba77fee8ba06e171df130d23bfd5d66ab86.jpeg
Galaxic - An out-of-this-world pearlescent/semi-metallic tile surface with glass. This preset uses 1x4 long tiles and multiple features. Great for high-class enigmatic environments and other-worldly living.


Havana - A clean triple-color preset with Herringbone tiling assets. Bold blues and colors are evocative of a fantastic beach-like setting. Useful for tropical spaces, outdoor patios, and clubhouse interiors.

7105e52156784978b156c2ecb2dda370dda998d8.jpeg
Excavation - A stone preset useful for interesting patio and backyard spaces. This preset uses triple colors to broaden the color range of the material surface. Highly flexible with steep displacement and pixel depth offset, this preset looks gorgeous and works great in many different lighting conditions!


Advanced Bricks (Cheap) - A cheaper version of the Advanced Bricks presets, featuring the same basic assets for less than 1/2 the rendering cost. This preset uses iterative parallax mapping to save on instructions while keeping the same great depth the advanced preset has to offer. Useful for exterior brick walls and buildings.

CYBER MONDAY SALE - 50% OFF, ONLY ON 11/28!

Also, I have an important announcement to make: this preset will be a part of Unreal Marketplace’s Cyber Monday sale! For one day only, this system will be on sale for half off the normal $25 price! That’s right, this entire system can be yours for only $12.50! I normally don’t provide any discounts considering the system is cheap enough as it is, but the Cyber Monday event is something special. Merry almost-Christmas, everybody!

NOTE TO EVERYONE PURCHASING THE 4.14 UPDATE: Ryan B from Epic has confirmed that there is a bug in 4.14 which overturned an optimization that helped compress repeated code in the Material Editor. The bug has been fixed and will be released in the 4.14.1 hotfix, scheduled to come out later. However, since the Perfect Tile System is heavily reliant on repeated code, it will not run as smoothly until AFTER the 4.14.1 update is released. There will be some Parallax Occlusion materials showing up as 300+ instructions, and that complexity is not normal, nor representative of the kind of performance you can get out of this system. I hope that you pardon the temporary performance issues in the new engine and the Cyber Monday event. You should expect to see a 30% performance improvement after the hotfix release.

Here is Ryan B’s explanation of the bug and hotfix: https://forums.unrealengine.com/showthread.php?49169-POM-material&p=624232&viewfull=1#post624232

I don’t have any immediate use for your system, but it seems quality. I didn’t plan on buying, but I will since it’ll be 50% off.

I’m certain you will definitely find a use for this system! Actually, I made it to solve a fairly common problem in games: texture tiling. Who couldn’t use an infinite set of bricks, stones, wooden paneling, and tiles?

I’m hoping that I’m missing something- I thought that I could use this material on two different objects in the same scene to get different tile patterns on them, but I just get the same identical pattern repeating on each object. Can you suggest a way that I can get even a little variation across objects?

The intention of the system was to provide variation between tiles across the surface of a single material. So, if you have tiling bricks, instead of having one repeating texture for all the bricks, you can have each brick shaded a different color, different roughness value, with different properties. If you explain to me what exactly you hoped to achieve, I might be able to make it happen in the next update. It is possible to take the object world position and offset the tiling of the entire system. That’s actually very easy for me to set up!

Yep, that’s exactly what I’ve already done. The result is really great, and we are super happy with Perfect Tile System! This would probably be a useful feature for other people too, so it might be good for you to add.

Yes! However, I do believe most people would want the tiles to line up at the edge, not just arbitrarily shift to any value. I will develop this feature and include it in the next update for UE 4.15!

EDIT: OK, I have added the ability to shift the UVs randomly per-object. This feature uses 8 vertex instructions, only 3 vertex instructions when using instanced meshes. It’s a very complex method that takes into account sprite values for the tiling and uses a texture-based method to determine seed values. This feature will be made available when the PTS updates for UE 4.15.

AND AN ANNOUNCEMENT TO ALL: The Unreal Engine 4.14.1 hotfix update is finally out! There was a bug in the system that did not allow parallax occlusion (or other custom material nodes) to compress properly when being fed to multiple outputs. You will find that many materials in the Perfect Tile System, particularly those with parallax occlusion and custom code, have had a significant drop in shader instructions. The Advanced Bricks preset used 308 pixel instructions before the update, now it only uses 222. This is a 28% improvement in performance for free. If you haven’t already, please download the 4.14.1 hotfix.

Merry Christmas, guys! It’s been 2 years since my last update to this system. Wow! Overall not much has changed, but a few interesting things did happen:

  • Support for 4.21 - A new update actually comes with the version supported for 4.21.
  • New Biasing Feature and Function - Previously, your options for seed distribution were limited to linear or inverse sine. But now, you can use the new biasing feature to select any value from 0 to 1 and control exactly how strong to bias towards those values without losing the full range. This feature costs 11 extra pixel shader instructions (20 to bias tile-tilting) and completely supplanted asine distribution in both control and effectiveness.
  • Texture Seeding Deprecated - Even though textures were cheaper on pixel shaders, it required extra texture lookups (which balloon depending on the options selected), and this was not as accurate as the procedural methods.
  • Asset Cleanup - Normal maps and textures have been cleaned up for the Stone assets. They are 2K, now they look the part!
  • Preset Improvements - I’m always making minor adjustments to presets. Some presets like Mahogany and Wood now have better coloring and parallax on by default. Some of the high-end presets now take advantage of pixel depth offset.

And there is more to come in the future:

  • Seamless Patch for Tile Randomizer - Right now the randomizer has a seam because the mask has to be included. I hope to integrate with parallax seamlessly, too, and the fix can be applied after I figure out the integration.
  • **Iridescence - **A cool multicolored shader effect for metals and metallic coats.
  • Oren-Nayar-like Diffuse - For rougher surfaces (bricks, stone, wood, etc.). This may be implemented as a roughness-based fresnel effect.
  • Alternate Blend Modes - Hard Light, Soft Light, and Overlay. Currently TMs only blend as Multiply. I’m trying to trim, not explode the shader options, but it would be nice to get better blending.

Big news for upcoming effects:

Iridescence has been successfully integrated! The effect is achieved using the sun direction specular (Blinn-Phong) and angle of the surface (Fresnel) to drive a gradient that provides the color warping. This effect has been added to the Metal Twine and Neotype presets. You have a range of controls from intensity and color shift to the frequency of the color warping and specular power. It’s as easy as toggling a switch, and your tiles will shimmer with color!

Work is progressing on a Rough Diffuse to make rough and dusty surfaces like stone, bricks, unpolished tile, and untreated wood look proper. Lambertian diffuse darkens objects around the edges, but rough surfaces actually brighten. So, we need to combat that diffuse with our own mixture. I’m trying to find the right blend so colors don’t become desaturated, and it is proving to be a daunting task. But the end result should be an easy toggle-on for better diffuse shading, automatically calculated based off of the material’s roughness, with a simple intensity parameter to scale the effect.

SoftDiffuse.gif

4.25 Updates

  • Added basic support for UE4’s new BDRF anisotropy - Both the old temporal anisotropic and new BDRF anisotropic rendering methods are supported by the current version of the shader. Make sure to choose the right one for your project!

  • Temporal (old) - Requires Temporal AA and longer time to resolve, tends to generate artifacts the stronger the effect is stretched.

  • Engine (new) - Image reflections appear to stretch cleanly and appropriately, but GGX specular highlights seem unaffected. More stable.

  • The Rough Diffuse effect is finished. It now performs much better and behaves more appropriately with simplified user controls.

  • Some materials like Advanced Bricks and Excavation now have rough diffuse added.

Also, the home content will no longer be updated. It will be removed in the next release.

If anyone has any issues or questions, please let me know! I’d love to see what kind of projects you guys are making with this system as well.