DelSol CG Shader Utility

Summary:

DelSol: Projects

DelSol is a melscript driven tool set which brings real time cg shader support to the artist’s production environment. It was designed to assist artists with the process of setting up, viewing, and exporting models, scenes, and lighting using the same vertex and fragment shaders which are used in-game. The goal was to have a true WYSIWYG 3D art production tool for next gen games.

CG in Maya

I worked on DelSol co-operatively with the art director and the senior technical artist. It was written in tandem with a Maya plugin (the plugin was written and maintained separately by an engineer) used to display cg shaders and edit their parameters in real time

I had a part in almost every aspect of delSol, but the majority of the work on the “Textures” and “Lights” tabs was my own. I also did extensive work on the export pipeline.

Helios:

DelSol: Helios

Helios is an intermediate viewing program to preview a model on the development kit, independent of the game engine. It allows artists to quickly test changes without overwriting local game assets.

The option to export and run on multiple platforms simultaneously is especially useful.

Shaders:

DelSol: Shaders

DelSol's Shader tab is the heart of the utility. Here you can create new cg shaders, convert maya materials into cg, re-source shader engines from a different directory, etc.

The render state presets allow artist to apply preset renders states such as "glass" to multiple shaders at once.

Textures:

DelSol: Textures

The textures tab provides a wealth of information and texture options.

Artists can change textures' source directory, file type, and export compression settings. Individual compression and mipmap settings can be applied to different platforms. There is even support for changing sampler parameters across all shaders which use the selected textures.

Lights:

DelSol: Lights

The lights tab simplifies the process of creating and connecting lights to their associated semantics in the cg shaders.

There is support for traditional and deferred lighting models.

UI Builder

Summary:

UI Builder: Screen Widget

UI Builder was a WYSIWYG melscript tool used to create and preview game menus directly in Maya. The “widget” based system allowed artists to quickly create and manipulate UI objects like images, text, lists, etc. Screen interactions could also be tested in a preview mode with up to 4 Xbox controllers (plugged in via USB).

Each screen was saved as its own maya scene file. In preview mode, navigation between screens would load each new file, keeping a history stack for ‘back’ actions, and restoring any unsaved changes upon exiting preview mode.

Widgets:

UI Builder: List Widgets

Text widgets were created using input parameters to build a polygonal plane for each character. Each plane displayed the correct character by setting UVs dynamically and doing a texture lookup on a font-map; therefore changes were easy to perform and updated immediately. There were also the standard typographical adjustments like alignment, leading, and kerning available.

List widgets could be text or image lists. Either type had options for scrolling, alignment, size, alpha, even settings for arranging list items in an arc...

Events and Responses:

UI Builder: Objects Widget

Complex event based object interactions could be built using the tool’s "objects" tab. Events and responses were applied to the selected widget from a popup menu.

The system was built to be expandable, so adding new event or response functions was relatively painless.

Stadium Builder

Summary:

Stadium Builder

The Stadium Builder was a WYSIWYG melscript tool used to create and preview game stadiums directly in Maya. The stadium information is read from and saved into the same XML format that is used in-game.

The stadium is separated into 24 discreet sections. Each section contains modules, which are pre-built models referenced from saved maya files. The artist creates a new stadium with the Stadium Builder, selects any combination of sections from the window (the blue icons), and adds modules.

When importing the modules, the tool automatically consolidates duplicate materials, helping keep the scene's shader count (and clutter) to a minimum.

The center list on the UI shows which modules are currently present in the selected section(s). If there are multiple selections, only modules which occur in all selected sections will be listed.