10 Nov 2009

Amazon starts pre-ordering for the super-limited German *personalized edition* of “Drakensang - River Of Time” with your own name on the box. First time any game offers this, as far as we’re aware at least. I really, really dig the DVD box cover by the way. We got some of those posters a few days ago and they’re simply admirable :o)

Debug

App

new application identifier strings AppTitle and AppID, this is necessary for some console platforms

Jobs

this is a new subsystem to distribute tasks either across threads in a thread-pool (Win32 and Xbox360) or the SPUs on the PS3

FrameSync

this is a new subsystem which implements better synchronization between the game thread and render thread

== Render Layer

CoreGraphics

parent window stuff in DisplayDevice (Win32 platform)

it’s now possible to share depth/stencil buffers between render targets

the ShaderServer now parses a dictionary file (created by the shaderbatcher3.exe tool) instead of listing the directory content of the shaders directory

removed array support from shader variables (shader parameter arrays are not very portable)

some restructuring because of the PS3 port (some classes have been split into a base class and platform specific derived classes)

new private method in D3D9RenderDevice: SyncGPU() this is called inside Present() to prevent the GPU from running too far ahead of the CPU (this is a driver-internal “optimization” which can lead to frame stuttering under some circumstances)

better control over clearing a render target through clear flags

the RenderDevice::SaveScreenshot() method is now responsible to set the MIME type on the output stream, this is because the actually saved MIME type may now be different then the requested type

no more byte-order conversion when loading mesh files, this happens in the asset pipeline now

new class MemoryMeshLoader, setup a mesh object from an existing VertexBuffer and IndexBuffer object

CoreAudio and Audio

the CoreAudio and Audio subsystem are obsolete and have been replaced with the FMOD-based Audio2 subsystem, which “automatically” works across all platforms, please check the FMOD license restrictions for commercial projects!

CoreAnimation

the following classes have been removed from CoreAnimation: AnimDrivenMotionSampler, AnimMixer, AnimSampler

new file format for animation data: nax3

new animation curve type: Velocity, this is used by the AnimDrivenMotion feature

Input

no noteworthy changes

Frame

minor changes for Pre-Lightpass-Rendering

better control over render target clear in FramePass

FramePostEffect: rendering a full-screen-quad has been moved into new helper class RenderUtil::DrawFullScreenQuad

frame shaders are now loaded on demand

new LightServer class: LightPrePassServer implements light pre-pass rendering (a variation on deferred shading, currently only implemented in the PS3 port)

Animation

anim evaluation has been “jobified”

no more AnimDrivenMotion specific code in Animation subsystem (this is now handled through a new anim curve type which contains velocity keys)

Audio2

new FMOD-based multiplatform audio subsystem

Characters

skeleton evaluation has been “jobified”

on PS3, skinning is now running on SPUs

the entire character subsystem has been optimized (essentially rewritten)

InternalGraphics

uses the FrameSync subsystem to run render thread and game thread in lock-step (this basically fixes all stuttering problems)

more debug infos displayed in web browser through GraphicsPageHandler

lots of fixes to the attachment system (character joint attachments: swords, shields, etc…)

restructured the Update/Render-Loop for better parallelization support, the idea is basically to make more room between updating an object and rendering an object so that asynchronous jobs have a better chance to finish on time before rendering requires the jobs output data

Graphics

some new messages to communicate from the main thread to the render thread (see graphicshandler.cc)

Models

nothing noteworthy…

Particles

some restructuring for better portability

particle updates have been “jobified”

RenderModules

no noteworthy changes…

RenderUtil

new helper class RenderFullScreenQuad

new helper class NodeLookupUtil to lookup a ModelNodeInstance in a hierarchy