Subscribe to GameFromScratch on YouTube Support GameFromScratch on Patreon
16. May 2014

 

The following is a collection of modern shader programming resources.  I intend to improve my knowledge of shader programming and intended to gather all the current resources I could access together in one place.  This resource (mostly) ignores HLSL ( Direct3D ) and custom implementations, like Unity3D.

Please note, this resource is only about shader programming only.  There exist tons of resources that are about OpenGL programming, which as a subset includes GLSL.  I covered many of these resources in my previous Modern OpenGL Resources round-up.  So if you are looking for tutorials, samples and books on OpenGL programming, you should start there.

 

Sites

 

Kick.js Shader Editor

Online shader editor tool with realtime preview and samples as well as error console.

 

Shadertoy

An absolute must visit.  Think of it as the gitbhub for shaders.  Create, share and view hundreds of others shaders.  The site is awesome, but a warning.  It will absolutely kick the crap out of your browser, as the home page, somewhat dumbly, opens dozens of shaders at once. 

 

Shdr

Online GL shader editor/validator/preview similar to Kick.js.  Open sourced MIT license.

 

GLSL Sandbox

Another site for discovering and sharing shaders, including a simple editor.

 

For tutorials links see the Modern OpenGL Resources round-up.

 

Tools

 

nVidia Nsight / CUDA Toolkit

Among other functionality, Nsight provides a GLSL/HLSL shader editor and enables shader debugging.  For Mac/Linux it’s available for Eclipse, but on Windows it’s a Visual Studio plugin.  Unfortunately, Visual Studio 2013 isn’t supported yet and Express versions do not support plugins, so I have not tried it yet.

 

AMD GPU PerfStudio

AMD’s GPU toolset.  Includes a shader editor and debugger, but sadly it’s currently HLSL only.  Worse, its DX11 only, meaning the converter probably wont work.

 

AMD GPU ShaderAnalyzer

Tool for analysing shader performance, doth GLSL and HLSL.

 

GLSL Hacker

Cross platform tool for 3D prototyping.  Load a 3D object and see your shader in action.

 

HLSL2GLSL

Convert DirectX9 HLSL shaders to GLSL.  Was originally released by AMD, then forked by someone on the Unity team.  Useful if trying to support both renderers, or using a tool that exports only HLSL shaders.  It’s open source and apparently the source is pretty awful.

 

nVidia FX Composer

nVidia’s shader IDE.  Abandoned, doesn’t directly support GLSL. :(

 

Rendermonkey

AMD/ATI’s shader IDE.  Also abandoned, a long time ago. :(

 

ShaderDesigner

GLSL IDE.  It’s old but seemingly was updated last year.  Didn’t run due to need to install component that required a license server.  I hate installing license servers to my machine.

 

Apple OpenGL Shader Builder

Apple include a development environment for developing and testing GL shaders.  It is however OS/X only and you need to log in to their developer portal to download.  The Guide is available without logging in.

 

qshaderedit

An open source, cross platform shader editor inspired by Apple’s Shader Builder.

 

Shazzam Shader Editor

First off, this exports HLSL to GLSL ( see HLSL2GLSL above ) and is aimed at XAML/Silverlight developers.  It does however include a shader editor and the ability to preview the results.  Last updated July 14th, 2012.

 

Glman

A simple tool for learning shader programming.  Includes the course work the tool is meant to supplement.  Last updated Dec 7, 2011.

 

GLShaders for Eclipse

Eclipse plugin for developing shaders ( vertex and pixel ) inside the Eclipse IDE.  Provides syntax colouring and error/warnings.

 

Books ( Shader specific )

 

GLSL Essentials

Dec 2013, Packt

SafariLink

116 Pages

 

OpenGL 4 Shading Language Cookbook 2nd Edition

Dec 2013, Packt

SafariLink

394 Pages

For some reason, Safari version is Second Edition, while on Amazon I can only find the first edition published in 2011.

 

Graphics Shaders: Theory and Practice, 2nd Edition

Nov 2011, CRC Press

SafariLink

518 Pages

 

OpenGL Shading Language, 3rd Edition

July 2009, Addison-Wesley

SafariLink

792 Pages

Once again, the above are simply books *dedicated* to shader programming and GLSL in specific.  Any modern OpenGL text will have a great deal of content on shader programming.  In fact, if it doesn’t you probably shouldn’t touch it, as it is heavily out of date.

Programming


17. April 2014

 

I suck at texturing.

 

There, I said it.  I love 3D modeling, I even enjoy rigging and animating.  While not my favorite activity, I am even OK with UV unwrapping…

 

But texturing, I suck at texture mapping.

 

Over the years I have tried a number of solutions that make texturing easier going back to the early days of 3D Studio Max plugins that allow you to paint directly on your models.  Since then, those tools have become progressively more built in to the base package but at the end of the day, the vast majority of texturing still takes place in Photoshop and I still suck at it.

 

Enter Substance Painter.  It appeared on Steam about a month back and I’ve been playing around with it ever since.  I intend to cover it in more detail soon, in fact I would have already if it weren't for the massive influx of goodies that came with GDC this year.  Anyways, stay tuned for more details shortly…image

 

For now, a spot a of news.  Beta 3 was just released.  Oh, and if you buy during the beta it’s 50% off.

 

Enough talking, so what exactly is Substance Painter?

 

Short version; it’s the program that makes me not completely suck at texturing.  That’s about the biggest endorsement I can give.

 

Long version, well, I’ll use their wording for that:

 

Substance Painter is a brand new 3D Painting app featuring never before seen features and workflow improvements to make the creation of textures for modern games easier than ever.


At Allegorithmic, we have a long history of working very closely with our customers, from the small independents to the largest AAA studios. Today we want you to help us design the ultimate painting tool and bring innovation and state of the art technology to every artist out there at a fair price.

 

Today, as the title suggests, they released Beta 3.  As to what’s new in BETA 3:

Testing focus

  • 2D View
Change list
  • Added: Seamless 2D View!
  • Added: Bitmap layer masks
  • Added: Environment exposure control
  • Updated: Fill Layers now use the Tools windows to set their properties
  • Updated: Materials can be applied to Fill Layers
  • Updated: Added more stencils in the stencil library
  • Updated: Particles presets updated for faster computation
  • Updated: PBR shader optimization and quality improvement for lower quality settings
  • Fixed: Layers thumbnails are linked to the currently selected channel
  • Fixed: Lots of crashes

 

Sound interesting?  Here is a video of Substance Painter in action:

There is also a free trial available.  It’s a stand alone program, although some of the import options are disabled right now ( I used OBJ personally, from Blender ).  Keep in mind it is a beta, and feels Beta-like at times.  Some features are currently missing and performance can occasionally suffer.  On the other hand, outside of some missing features, it feels production ready.  I hope to have a more detailed preview available soon.

 

If you try it out, let me know what you think.

Art News


14. April 2014

 

This press release just arrived from Autodesk:

 

Autodesk Maya LT 2015 to Launch on Steam

 

Today Autodesk announced that Maya LT 2015 is coming to Steam, Valve's popular entertainment platform. Maya LT brings its powerful animation and modeling feature set to Steam's active community of over 65 million gamers, developers and artists to help them create 3D game assets to personalize their games and bring them into popular Steam titles like "Defense of the Ancients 2" (DoTA 2) or to create assets for use in their own games.

"The Valve community is unique, because it includes a very engaged mix of both gamers and developers working together to mod titles and generate content. We hope Maya LT will further that creative spirit and help a Steam user of any skill level to create high quality 3D game assets," said Frank Delise, imagedirector, games solution, Autodesk. "We're engaging with the community on day one by participating in forums, answering questions and offering custom tutorial content for DoTA 2 fans. We can't wait to try new things with the community and see how they push Maya LT to its limit and beyond."

A unique solution for professionals and hobbyists alike, Maya LT boasts a targeted feature set developed from the ground up for the indie game industry, like powerful modeling tools to help create and alter 3D assets of any size and a simplified workflow with the Unity 3D Engine. When purchased on Steam, developers will have access to a full commercial Maya LT license, allowing assets created in the tool to also be exported for use in any game on PC, console and mobile.

An online entertainment platform, Steam hosts over 2000 games in all genres. Users can not only instantly download and play games, but also create and share content through the Steam Workshop.

Available April 22, 2014, Maya LT term licenses will be available monthly for $50 USD and will be available in select countries. To learn more or purchase the product on Steam, visit: http://store.steampowered.com/app/243580 .

To check out all the custom DoTA 2 content and Maya LT 101 tutorials, visit the Autodesk Steam community hub: http://steamcommunity.com/app/243580/ .

 

Steam is quickly becoming the online hub for game development tools.  Maya LT is becoming much more feature complete from when it was originally released, much of it based on user feedback.

News


8. April 2014

 

Unreal shook the indie game developer world up recently when they announced they made Unreal Engine 4, with complete source code, available for $19/month as well as a 5% royalty.  I assume some of you are wondering what your 20 bucks a month gets you.  Well this post is intended as an overview of what is included in Unreal to help you decide if you will take the plunge.  By no means is it intended as a review, although I will make a few comments about quality where applicable.  Alright, lets jump right in!

 

Welcome to the Unreal Portal/Getting Started

 

Once you’ve signed up, entered and confirmed your credit card information, you will now be able to access the Unreal Engine portal.  This is where you can go about downloading Unreal Engine and access the community, wiki, source code and documentation, more on that later.

image

 

Click the download link to the right to download the downloader.  This initital download is quite small but that’s only just the beginning.  Now the proper download begins.

Unreal2

 

The initial download is about 7GB, the first patch was 4GB.  Fortunately download speeds are great, even on day 1 I got enough bandwidth to max on out 50MB connection.

 

Each time you launch UE4, you will be prompted for credentials.  ( Haven’t used Offline mode yet, so you shouldn’t require an online connection like CryEngine ).

image

 

Then once again back to the launcher.  This is a combination of news, community portal, marketplace and quick launch.

image

Coincidentally, in Windows 8.1, for some reason none of the news links actually work for me.  You can see down the left hand side there are a number of projects listed under My Content.  Most of these are actually freely available templates you can get from the marketplace.  Each of these is a one level game demonstrating a different concept, be it 2D, 3D, Blueprints, C++ coding, etc.  They range in size between 20MB and 800MB.  They are found in the marketplace:

 

image

 

There’s tons of high quality starter content here and right now almost the entire thing is free.  However, you can see the beginnings of a Unity style marketplace is planned if you look under the coming soon section, you can see a gun based asset pack that is going to be for sale:

image

 

Hopefully this is opened up to the community and becomes a viable competitor to Unity’s Asset Store.  Now let’s fire up the main editor.  See that big yellow LAUNCH button, yeah, that’s how.  I’ll open it up with the Strategy Game template, on of the more complex samples.

 

The Main Editor

 

This is where the magic happens and in a word, it’s polished.

image

 

Perhaps most impressive, notice the Play button in the top toolbar. at any time you can actually hit this and run your game directly in the editor instantly.

 

One word of warning here.  You level is basically running as a game in your engine at all times.  For most people this isn’t going to be a big deal, but to people like myself who develop on the go using a laptop it can be crippling if you arent near a plug.  The Unreal Engine is an absolute battery killer.  On my Windows laptop I can generally run Unity for 3 or 4 hours on battery, a bit longer if I try to stretch it out.  Unreal Engine on the other hand…

 

image

 

Ouch.  My 2013 Macbook Air faired even worse.  It went from fully charged to dead in just over 30 minutes.

 

That leads to an interesting question… how is performance, what kind of system do you need to use Unreal Engine?

 

Well the good news is you don’t need a ton of power, the tools actually ran on the Macbook Air, a 2013 Intel HD4000 GPU powered machine.  That said the experience certainly wasn’t ideal.  In all honesty, if that was my primary machine I would look elsewhere for an engine.  However on my primary Windows box, a Razer Razerblade 14” laptop ( i7, 8GB, nVidia 765m ) the performance is great, except of course the battery drain that is.

 

The editor itself is mostly for content placement, but there is a ton of power packed away.  Most tasks open up a dedicated editor of their own.  It keeps things uncluttered, but isn’t very alt + tab friendly for some reason.

 

Placing content is mostly a matter of drag and drop from the content browser to the scene.  Speaking of Content Browser, here it is:

image

Makes it easy to logically organize all your various game assets.

 

On the right hand side of the editor is the context sensitive details panel as well as a searchable scene graph.

image

 

For level editing, UnrealEd has it’s roots as a CSG ( Constructive Solid Geometry ) editor and that functionality is still there.  Basically CSG modeling works by creating complex shapes by adding and subtracting simple shapes, here for example is a box cut from another box in the editor:

image

These days however, CSG modeling is rarely used, but can be used to quickly prototype a level.

 

Of course there is a height mapped landscape editor built in:

image

You can push/pull the landscape to manipulate it, use brushes to quickly instance geometry and texture the landscape.  OF course you can still drag/drop from the Content Browser to a landscape you’ve generated.

 

This of course only scratches the surface of what the Editor can do.  You can also define lighting, environmental effects, Nav mesh volumes, etc.

image

 

The Editor itself could no doubt fill a book, or perhaps many, but Unreal have done a very good job of compartmentalizing the details.  Until you need something, it’s mostly out of your way, and if you’ve worked in Unity or any 3D applications, it should become pretty quickly intuitive to you.  One thing I really don’t like however is the hold control to do model.  So for example, if you want to paint the geometry, you need to hold down the Ctrl button while left clicking.  It is counterintuitive to me.

 

Remember how I said earlier that the editor is composed of a number of different windows.  One such window is for editing Blueprints.   Let’s take a look at that next.

 

Blueprints

 

So, what exactly are blueprints?  Well if you’ve used prior Unreal engines, it is the replacement for Kismet.  If you are completely new to Unreal, think of Blueprints like a visual programming language.  It works a lot like the graphing functionality in most 3D applications.  Don’t dismiss Blueprints early either, they are surprisingly capable.  Many of the sample games you can download are implemented entirely in Blueprints.

 

Blueprints can be accessed with the Blueprints button in the main interface:

image

 

Each level can have a Blueprint that responds to a variety of events or you can create Class Blueprints, which are basically exactly like C++ classes, except they are implemented as Blueprints.

 

Blueprints open as a completely separate window, like so:

image

 

Blueprints can be complex beasts.  Here for example is the Blueprint for controlling the character from the blueprint example:

image

 

One annoyance I have is the lack of zoom granularity control.  Zooming to fit just what you want on the screen can be a chore as you under/over-zoom due to the lack of granularity.

 

Think of Blueprints like massive flow charts that control, well, just about everything in your game.  Most classes and their properties in the game are exposed as Blueprints and you have a large library of functionality available to you.

image

 

This post is starting to get a bit long so I am going to split it into two parts.  In Part Two we look at the C++ programming side of the fence, explore the documentation available, take a look at the source and the community available.

 

On to part two.

Programming


8. April 2014

 

One of the vaunted features of Unreal Engine 4 is C++ support.  How exactly does that work?  First you need to have an external IDE installed, either Visual C++ on Windows or XCode on Mac.  The Express version will work but the helper toolbar is unavailable.  It’s mostly just a shortcut so it’s not a huge loss.  Integration is pretty solid.  In the Editor in the File menu there are a number of menu options:

 

C++ Coding

 

image

 

By selecting Add Code to Project… you can easily create a new game object using a wizard like sequence.  You select the base class:

 

image

 

Name it and you are done:

image

 

Once you click Create Class, you will be prompted to edit the code:

image

 

You will be brought to your IDE of choice.  From this point on, its just like working with any other Visual Studio or XCode C++ project.

image

 

The result of your project is a DLL file, build as per normal and your game will update in the editor.  It’s only when adding ( like we just did ) a new class do you need to restart the Unreal Engine Editor.  Otherwise a simple refresh should suffice.

 

The actual C++ libraries are fairly massive and far beyond the scope of this brief overview.

 

Building Unreal Engine from Source

 

One of the big advantages of Unreal is you have complete access to the source code.  The code is available in multiple parts, a couple of zip files with most of the external dependencies then the remaining code is available of Github.  You have to associate your Github account with your Unreal account, but the process is basically instant.

 

The GitHub repository is about what you would expect.

image

 

The actual source isn’t that big, about 120MB, while the supporting zips measure in at a couple GB, but they shouldn’t regularly change.  Unreal make a bleeding edge release available for the brave of heart.

 

The actual process is about as simple as it gets.  You do a git pull, download and extract the supporting files into the same directory, then run a script that generates the project or solution file.  Then, in the case of Windows, simply open the SLN file in Visual Studio:

 

As you can see, the solution contains full sources for every tool in the SDK:

image

 

This is nice, when they say with source code, it’s the ENTIRE source, nothing is hidden from you.  On the other hand, have some patience, the build process isn’t exactly fast.  On my machine it took about half an hour, I cant even imagine how long it would take on the MacBook Air, probably a couple of hours.  Then again, I remember the bad old days of all day builds, so this is really a first world problem.

 

Have a fair bit of drive space available too, as building from source is going to require a fair bit of space:

image

 

I’ve only scanned the code but from what I’ve seen it’s pretty clean and well commented.  For the majority of devs, you probably wont ever need to modify the code, but being able to run it in debug mode is certainly invaluable.

 

 

The Documentation

 

A project like this lives of dies on it’s documentation and I am please to say Unreal Engine is well documented.

 

First there are a series of video tutorials.  Even without a membership you can check them out.  As of right now there are 64 video tutorials available.

The documentation is broken down like so:

image

 

Under the Samples & Tutorials some are currently just placeholders.

image

 

The Programming Guide is pretty comprehensive.

image

 

Reference documentation is again detailed:

image

 

They also provide the AnswerHub, a StackOverflow like portal for asking and answering questions.    As you can see from the screenshot below, answers come very quickly and devs are very active in solving problems.  If you run into a problem, you are very well supported:

image

 

In addition to AnswerHub, there is also a full Wiki:

image

Currently it is a bit sparse, but expect it to grow over time.

 

Finally there are the forums.  One of the nice things about having to pay to be a member is it gets the signal to noise ratio way down.  This means the only people on the forums are people that are using or evaluating Unreal Engine.

image

 

The forums are also very active and developers actively participate.

 

Summary

 

This of course only scratches the surface of the functionality available.  There shader support, skeletal systems, etc… all nicely integrated in the editor.  What I will say is I am actually shocked at the level of polish of not only the Engine and supporting tools, but also the community they have fostered and the level of support they are providing.

 

When I first downloaded UDK I was actually somewhat underwhelmed with what was included.  Level level of polish present in UE4 shows they are taking this release very seriously.  Don’t get me wrong, UE is NOT a beginner friendly product, this is some seriously powerful but also sophisticated tech you are being given here.  That said, Unreal have done an amazing job making it as accessible and well supported as I could have imagined.

 

Is it worth 19$ a month?  Most certainly, if only just for the learning experience it represents.

Programming


AppGameKit Studio

See More Tutorials on DevGa.me!

Month List