Categories & Tags
Archive

Cutting edge AAA shading technology for all

November 21, 2013 in Community News and Info, Demos, Tutorials and Tips, Technology by

Physically-based surface shaders in the Asset Store

So… physically-based surface shaders. Physically-based what? I hear you say. Even though we consider ourselves a company with its finger firmly on the gaming pulse, some of us had to have this explained (not the graphics team I hasten to add).

Physically-based surface shaders are a revolutionary (and really cool) way of doing shading that generate far more realistic and vibrant results. What distinguishes them from other shaders is that they actually mimic the behaviour of surfaces in the real world by following the law of energy conservation: the total amount of specular and diffuse reflection always equals the amount of incoming lighting energy.

The huge advantage of physically-based surface shaders isn’t just the exceptional visual fidelity they achieve, it’s that they look incredibly lifelike irrespective of the lighting conditions under which they’re used. Steel will look like steel whether it’s reflecting bright sunlight off a knight’s breastplate or used in a handrail on a dark and dreary New York backstreet. There’s no need to adjust your shader settings to get things looking ‘right’ when authoring different environments.

Physically based surfaces can have a wide range of reflective behaviour, making it easier to give shiny plastic, metal, wet stone and everything in between a unique visual identity. The Alloy Physical Shader Framework by RUST LTD, available now on the Unity Asset Store, brings this technology to Unity Pro.

Physically-based surface shaders are finding their way into many of the latest AAA productions like Killzone 3, Metal Gear Solid 5 and RYSE. RUST LTD’s Asset Store product is different in that it makes this technology accessible to small teams – or even individuals. By the way, RUST LTD are the team behind Museum of the Microstar – our DX11 contest winning entry. Museum of the Microstar used an earlier version of Alloy and showed its use scaled to intense heights.

MicrostarShot

The workaholic perfectionists at RUST LTD have spent 2 years working day and night to get the product to the point where they’re happy enough to release it, and somehow they’ve also found the time to come up with lots of learning material to help you guys get started. The Alloy package ships with a comprehensive sample scene, including over 30 complete materials with interactive controls so you can get up to speed fast on how to get the most out the set. Also, if you find yourself needing even more out of Alloy, the set is configured to make extending it with your own variants as easy as possible.

ControlPanelShot


“Being indie, and having worked so much with small teams and students, we wanted to make a tool that people like us could use. Artists and game designers without the resources of a full studio behind them now have accessible tools.”
Anton Hand, Beard Warrior at RUST LTD.

Alloy is built around a Normalized Blinn-Phong BRDF, which provides a great balance of speed and sophistication, and is fully compatible with DX9 and the light pre-pass renderer of Unity’s deferred mode. The Alloy set contains variants for all the common visual characteristics you might need including rim lighting, separated occlusion maps, detail maps, and several types of translucency.

Lastly, for those who don’t want the headache of managing cubemaps in complex environments, Alloy includes a complete set that uses Radially Symmetric Reflection Maps (RSRMs), a general-purpose blurred reflection texture that makes baked surfaces look shiny, without looking like perfect mirrors.

In an upcoming post we’ll dive deeper into both the technical details of Alloy, and the implications of developing content for a physically-based pipeline… stay tuned!

So, whether you’re a large team looking for that AAA graphics punch for your next-gen console game, or an indie trying to add wow factor, Alloy is ready for you. Check out these downloadable projects and demos made with Alloy, or simply purchase directly from the Asset Store.

Share this post

Comments (26)

Comments are closed.

21 Nov 2013, 4:40 pm

Oooooh! Shiny! I’ll be saving my pennies to check this out soon. I’m interested to know how optimal they are versus conventional ‘fakery’ shaders.

Serhat Ergen
21 Nov 2013, 4:49 pm

Haha. I think you didnt see any physical based shader or AAA game with cutting edge graphics :D This is funny. Still worse than normal shaders on most 2008 AAA games.

Jerry
21 Nov 2013, 5:46 pm

If I’m not mistaken it’s based on the Rendering Equation. And there is a good book that goes into details:
http://www.amazon.com/Physically-Based-Rendering-Second-Edition/dp/0123750792/ref=sr_1_cc_1?s=aps&ie=UTF8&qid=1385052245&sr=1-1-catcorr&keywords=Physically+Based+Rendering%3A+From+Theory+To+Implementation

It’s nice to see that this has already been done but the price is a little high for me. So I’ll most like recreate what they’ve done when I can.

21 Nov 2013, 6:39 pm

Whaaaaaat… Looks pretty spiffy. Sounds amazing. Thanks for the book link, Jerry!

MadMac
22 Nov 2013, 8:36 am

hmmm is it for PC only ? because of DirectX ???
Or does it work on Mac / Linux ???
If PC only… forget about it… duhhhh

22 Nov 2013, 1:18 pm

Alloy has no explicit dependencies on Direct3D. The tessellation shaders depend on SM4.0 and up, so that is a murky area (apologies, I don’t know Unity’s current level of cross-platform support there). Still, they use the Surface Shader system so they are fairly portable.

22 Nov 2013, 3:27 pm

Not to be a downer, but these are some pretty lacking examples of surfaces that can be made with physically based rendering.

First, the spherical reflection map lacks any information about the scene in which the surfaces lie. It reflects white, but the local lights already have that color so you’re not seeing any color range.

Second, your fresnel contribution and reflection are just not visible.

Third, your metals are all the same with the exception of color. How about some oxidation on the copper? How would brushed aluminum look? Those effects would make for a much more interesting, and realistic, surface. For 125$, I would expect more professional art.

Finally, the glass is probably the worst offender. No reflectivity? It appears to be a cloudy ball with support beams that are magically fading away.

Your environment as a whole lacks any directional light. It appears we’re on overcast Mars. So if the surfaces are reflecting a cubemap of the scene, there would barely any value range being reflected. Same with fresnel.

Physically based rendering is the way to make surfaces realistic, but these examples really need some work to get there.

numan
22 Nov 2013, 3:40 pm

Do these perform well on mobile?

Brendon
22 Nov 2013, 4:30 pm

You know http://threejs.org/ has post processing shaders available for free right now! The coolest thing about webGL is when you want to use a shader you just write it and use it. The thought of people having to pay for shaders is kind of odd. Unity should open up post processing shaders to indy developers. See here is a boat load of shaders https://www.shadertoy.com/ best part about them they just work.

22 Nov 2013, 10:24 pm

We’re not currently targeting mobile, since the tech depends on Linear Lighting and HDR. We’re waiting for mobile technology to catch up before we put a lot of effort into targeting it.

22 Nov 2013, 10:31 pm

@QUANTUMTHEORY
I’m guessing you didn’t check out the demos on our website:
http://alloy.rustltd.com/Projects.html

JASON
22 Nov 2013, 10:38 pm

This looks very cool, but I am curious if Unity is working towards their own implementation of a Physically-based shader suite, or if this 3rd party solution is the “Physically-based Ubershader” they’ve been speaking of here:
https://www.youtube.com/watch?v=8srWrgpVKJM
and here:
https://developer.nvidia.com/sites/default/files/akamai/gamedev/files/gdc12/GDC2012_Mastering_DirectX11_with_Unity.pdf

mixet
23 Nov 2013, 2:55 pm

@N00BODY
I just checked the demos on your website but im thinking these are really lacking shaders, normal shaders, like not even physically based. If you can check some real physical shading in cryengine or even viewport shaders for maya, you will understand my point. There is a normal mapped yellow ball in first image, you say gold, grey one is aluminum. Do you really think they look like gold and aluminum? Anyone can make better then these with not physical correct shaders. If you think your shaders can make better, just prove it with some examples, not by changing only the color of a normal mapped ball to make different kind of materials. These demos and the demos on your website is very lacking.

23 Nov 2013, 6:46 pm

@Mixet I would hope that you would see the difference between an example designed to show a component of a lighting model, and a finished game’s object. The purpose of the simple metal spheres in the demo scene is to show simple examples without extra texture data that are using solid f0 constants we’ve found for those actual metals, to demonstrate that the physical model produces the hue one would expect. The demo scene’s purpose is as a learning environment, and as a useful starting point for seeing how various forms of texture data interact with the model, and aren’t designed to be representative of hugely polished final game assets. We could have easily thrown super detailed map-sets made in DDO at these, which would have made them look great, but would have obscured which visual features were bring produced due to which data/process. Either way, we’ll be putting together more demos as we add to and refine the set over the coming months. We’re very receptive to what folks would like to see improve about the set, and consider it an active and ongoing project. If you want to drop by our forum thread at any time we would welcome your feedback!

Tubor
23 Nov 2013, 8:35 pm

Why is this being presented like its the first physically based shader on Unity? Theres a year old asset package doing it on the asset store and then theres jove which launched a few weeks ago

Joel
24 Nov 2013, 12:44 am

RUST Ltd. — good job! Some people just aren’t going to “get it” in regards to demoing shader code, and the current troll fad is to compare Unity to CE and UE4.

@TUBOR, where is it presented as if it’s the first PB shader for Unity? It’s a great package and deserves the promotion, but I don’t see where your complaint is valid.

Gonarch
24 Nov 2013, 10:31 pm

Not to be an a**, but instead of all that partnership, advertisment and capitalistic bulls***, isn’t the time to work on the engine? Before someone say “they do”, I don’t care, every new major release is half as*** and still many core features are missing or are just obsolete.

I understand that this side of the planet works on these premises, advertising, partnership and all, but it would be good to put some of that stuff aside for a moment and focus on the countless of request for fixes and core features people is asking. Is partnership iwth windows capitalist lobby part of the requests from users? If so then like I said nothing.

25 Nov 2013, 6:24 pm

The algorithms seems to be well implemented but they are poorly showcased. As some guys already said, it doesn’t really look that realistic or quite “Physically based”. Still, I can see the great efforts into bringing such rendering into Unity, so you got my Kudos. :)

DDas
26 Nov 2013, 8:01 am

I’d agree with Georges above- the demo level is pretty poorly showcased. Especially the glass and the Aluminium, Gold, Copper stuff. Not very convincing at all.

The basic premise of Physically based shaders is to do with conservation of energy (1st law of thermodynamics) . Incident light is either absorbed, reflected or transmitted. In each case the proportions of these three vary, the sum of these 3 less than / or equals the incident light.

I would like Unity’s own presentation in GDC 2012 as a resource.
https://developer.nvidia.com/sites/default/files/akamai/gamedev/files/gdc12/GDC2012_Mastering_DirectX11_with_Unity.pdf

Please have a look at the slides here. I’m afraid you have not showcased any of this properly.

26 Nov 2013, 8:04 am

Agreed with DDAS yeah.

i like unity
27 Nov 2013, 12:19 pm

I know,we can produce better images with this new system, but not up to what is found in other powerful engines.
I like unity , Hope that up to level CE and UE4.
I think we’re a little bit greedy.
I will wait there is no problem , unity is great engine.

i like unity
27 Nov 2013, 1:00 pm

http://www.youtube.com/watch?v=YCw8wwwKNBQ

Brian Lockett
14 Jan 2014, 5:28 pm

I don’t mean to sound negative, but I wonder why Unity itself is slow to see such core implementations? Why is it that we’re too often waiting on a third-party developer to develop a band-aid solution to Unity instead of Unity developers themselves integrating and revamping Unity from within?

I mean, just to use a splat map in a straightforward manner (something that should be a no-fuss process), I’ve got to buy an asset for that. To use splines within Unity, I’ve got to buy an asset for that. To have simple tri-planar texturing, I’ve got to buy an asset for that. To have simple things, I often have to look for an asset to purchase just to use it–and half the time, even that doesn’t always look or feel stellar, because of the limitations of Unity itself. Third-party developers can only apply band-aids so long on the problem before the engine needs some more long-needed surgery.

I would like to rely on the Asset Store more for actual in-game assets rather than components to add to Unity just to make the game somewhat more decent. Unity is widely-adopted because it’s standard version is free, but it’s not as straightforward and robust as it could be. We see developments like the addition of 2D, which is great, but it seems like developers just stop there, only to see another such development several years later.

Besides the few rendering options, without such core and essential features as physically-based rendering, destructible environments, and visual fidelity that looks like an actual revamping of the engine instead of a mere (rather lazy-looking) trying to fix the cheaper approach. Unity CAN do some nice-looking stuff–granted, in the right hands and if you pay enough for assets to help get it there. But some things in Unity just doesn’t respect my asset quality.

Not to always compare Unity to it, but in UDK, how you create an asset in your 3D package is how it looks in-engine. In Unity, my assets’ quality change noticeable, such as in the normal map quality or the sculpted detail quality looking rather muted, to where I immediately know this is “a Unity game.” Even the DirectX 11 seems off compared to many other engines’ usage of it. I don’t want this noticeable quality difference. I am willing to pay to have my assets look just how I created them to look, without compromise–but not always in the form of assets that rarely hide the true nature of Unity’s shortcomings.

I’m not against buying Pro features or assets that enhance Unity–I’m just against the reliance of buying assets to do the job that should be in Unity (Pro). I don’t ask everything for free–I just ask for having better integration within Unity as available. I am willing to pay for quality that’s standard in Unity more than I am in buying the Pro version and then relying on the Asset Store–probably spending more money in the Asset Store than what I’d spend on the Pro license! Some things truly belong there in the Asset Store, but some other thing belong in Unity to start with.

I appreciate Unity and what it’s allowed and done for indie game development, though, I can’t help feeling that more can be done. I think Unity has great services, such as the Asset Store and the monthly payment option for Unity Pro, but without taking some more major steps towards improving the actual product–the Unity game engine itself–it seems like you’ll rely more on your services for your success than your actual product.

I hope this comes off as constructive. I would like to see Unity grow, to meet the potential I know it can well see.

Ultra Mario
17 Jan 2014, 3:01 pm

Honestly, I totally agree with Brian Lockett.

Not to be against anything (or anyone) with Unity’s team, but the strategy to rely on the Asset Store for very basic features that SHOULD be available in the Pro version is not something understandable for me, and is preventing U3D from being a more “professional” game engine. For each missing feature, there is an Asset Store product/ solution. In a couple of U3D threads, many answers just provide random Asset Store links.
Even some “promised” features, like the GUI system (which is ready, as we’ve seen in YouTube), are still unavailable. Probably not because it’s “not perfect” (waiting for a “perfect” GUI system is just a nonsense. I never saw a 100% perfect system) but because the similar version made by the same guy (NGUI) is still on sale.More annoying, we don’t even have a clue about any release date (if it will be released one day), apart from an unfathomable “4.X”.

Hence, indie developers have to spend money with the Pro version AND also on the asset store if they want a “AAA” quality game in order to meet today’s requirements & expectations.
Otherwise, they will have to spend a tremendous amount of time to directly implement (/code) BASIC stuff with Cg, C# or C++ (or something else, doesn’t matter now), just to make a decent version of their game.
When people are buying the Pro version of an engine, they shouldn’t be messing around with plugins and “asset store” extensions just for getting something more enjoyable and more decent.

I hope that Unity’s team will consider a different strategy. Earning money in the asset store and relying on it is clearly NOT as good as selling more Pro versions and rising Unity to the top. In other words, wrecking Unity’s power with the Asset Store can be a long-term danger.

In any case, it’s just my opinion, and I don’t want to hurt anyone’s feelings. I just want to see better prospects for Unity.

18 Jan 2014, 9:47 am

@Brian Lockett, @Ultra Mario: I can assure you that when we plan which features we’re going to work on, at *no point* we go “hey we can just not do this, someone will make an asset store package, and we’ll get our share of revenue anyway”.

Yes, we are sorely missing built-in shaders that are more modern (physically based, more features etc. etc.). We are working on them (http://www.youtube.com/watch?v=8srWrgpVKJM).

Yes, we are missing a good built-in GUI solution, and we are working on it (and yes, this story is getting old; development flow of that feature hasn’t exactly been the pinnacle of good planning).

Leave a Reply

Comments are closed.