Node based approach to material editing: all materials used in the game are created and tuned by artists using proprietary node-based material editor. With hundreds of nodes it allows us to create virtually any material imaginable.
Meshes are imported from common model editing tools with materials assigned to polygon strips. Materials are created and assigned in editor. All models can have up to 20 different materials and unlimited number of material sets.
Material editor allows us and our users to combine hundreds of different nodes to create large variety of materials with all common effects: bump mapping, specular highlights, fresnel, animated textures, refractions, reflections and much more.
In-editor debugger shows HSLS and assembly code for both vertex and pixel shaders generated for each material and allows easy bug tracking and optimizations. It also shows all errors and possible optimization places in your code.
Animated procedural materials with distortion, transparency, refraction, reflection and postprocessing glow are only small example of what is possible to create using materials editor.
Common Graphics Features - full 3d rendering
- rotateable camera with multiple zoom levels
- animated water, lakes, rivers and waterfalls
- fully bump mapped models with normal maps
- animated GUI with physics
- window transitions with windows users can move around the screen
- playable in fullscreen or windowed mode
- supported all resolutions from 1024x768 up to 2560x1600
- full shadow support with three types of rendering (dynamic objects only, static objects only or both) with multiple detail levels
Node based material editor for texturing and model editing - Node based editor allows us to combine various nodes into complex materials. Each node corresponds to single function coded in HLSL.
- Instruction count and texture usage: editor shows instruction count for various shader types (2.0, 2.x, 3.0).
- Material editor comes with over 200 different nodes including:
- math nodes (vector calculations, compraisons, numerics, trigonometry)
- pixel shader nodes (various phong shader nodes, flat shader nodes)
- various vertex shader nodes (regular, animated, billboard shader etc.)
- various texture sampler nodes (2D texture samplers, 3D cubemap samlers, 3D volume samplers, postprocessing texture/layer samplers, texture transformation nodes, texture modifier nodes)
- postprocessing nodes (for distortions, tonemapping, layer combines, dof etc.)
- constant access nodes (parameters sent from engine to material subsystem: world space position, ambient color, time, vertex color, screen space position, normal, tangent, binormal, camera -> pixel vector, blend weight etc.)
- animation parameters:these are parameters that can be accessed through material animator, each parameter can be animated as single float value using spline based interpolation or as float4 color using linear interpolation
- Using combinations of these nodes users can easily create various materials such as
- procedural materials (river water)
- animated materials (lava, global water)
- masked materials (grass, trees, bushes)
- materials with distortions (glass, water, fumes, foam)
- postprocessing materials (postprocessing glow, hdr, soft particles, screenspace distortions)
- reflective materials (metals, plastic, glass)
- refractive materials (tinted glass)
- normal mapped materials (almost every material in the game that uses phong shader has normal map)
- Each material can be made of vertex and pixel shader nodes.
- Supports environment maps for reflection.
Material Debugging and Optimizations - Editor has live preview of vertex and pixel shader code generate for each material. Each code is shown in HLSL and assembly. This allows us to easily debug and fine tune new material nodes.
- In-editor debugger displays lines of code where there is error and displays error code and description.
- It is possible to add custom nodes to material editor without need for program recompilation.
|