Graphical shader system

I’ve read the this article recently on Gamasutra. I would like to say it dose give me another sight on the workflow of automated shader system, mostly because it was written from the artist’s view.

So basically the substance is that do not let non-programmer write shaders which are exactly the code running on GPU.  The workflow of this system seems flawed because artists have to take time to learn the tools,  but generally, they couldn’t provide reliable shaders and programmers still need to be involved to optimize the performance.

Actually, some people have already debated on graphical shader system, and think it is bad. Shawn Hargreaves said uber shader is not a good coding practice and it is always hard to maintain. I agree, because the main idea behind the scene is to utilize the static flow control to create shader permutations, it of course increases the total complexity.

Others like Christer Ericson and Wolfgang Engle think shaders are most performance critical for a game, and it’s wrong to give this responsiblity to artists. Wolfgang even pointed out such system will lead to ‘shader explosion’. Large amounts of shader copies are generated due to lack of restriction which is a waste of GPU horsepower.

They sugguest a tool that expose the limited variables as checkbox or other kind of GUI, not a do-whatever-you-want interface. What I can imagine is it needs more iterations between programmers and artists to determine what the effect should look like and how many variables are tweakable, that means those programmers will be occupied for maintenance which is not a good news.

On the contrary, uber shader approach is greate for rapid prototype. The advantage of the system is we are able to pull off quite a bit of custom material effects without any large amount of programmer time. With the base shaders created by tech-artists, we can also avoid serious performance issue. Here is a really good example. (also see the comment by J-S)

So both approaches have their pros and cons. I don’t think there’s an absolutely right way to go. Maybe a hybrid approach will be the best one among them.


Leave a Reply

Please log in using one of these methods to post your comment: Logo

You are commenting using your account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s