SwiftShader Technology

Download SwiftShader SwiftShader 2.0 provides developers and systems providers with an ultra-high-performance software 3D renderer that is suitable for a wide variety of applications ranging from games to embedded systems. The SwiftShader rendering engine is able to execute complex vertex and pixel shaders, allowing for quality levels never before available in a high performance software renderer. This allows game developers to broaden their market penetration to include users who may not have optimal gaming systems. SwiftShader is also a great tool for systems developers and integrators, allowing them to make use of 3D graphics in virtualized environments or from server-based systems.

Developer Interface

3DMark running under SwiftShader 2.0 3DMark running using SwiftShader 2.0 At the developer level, SwiftShader 2.0 presents a familiar API, providing application developers with a drop-in D3D8 or D3D9 DLL file. The SwiftShader D3D DLLs provide the same COM-based APIs that Direct3D applications expect, making them binary compatible with existing applications. Most applications can be tested with SwiftShader by simply moving the SwiftShader D3D8 or D3D9 DLL into the same directory as the application.

While SwiftShader 2.0 is currently available as a Microsoft Windows DLL, it has been written in an extremely modular fashion. SwiftShader can be integrated more deeply into other software products, serving as a software geometry-processing engine for a 3D card that accelerates only rasterization, for example, or integrated directly into ROM in an embedded system.

Rendering Features

In addition to features such as Shader Model 2.0 support, SwiftShader 2.0 supplies a wide range of other features required by today's newest applications and games. These include high quality trilinear texture sampling, support for cubic and spherical environment maps, texture coordinate generation, multi-texturing, alpha blending, fog, advanced texture blending modes, bump mapping, mipmapping, and all other standard Direct3D 9 Shader model 2.0 features. Despite this extensive feature list, SwiftShader is able to perform at speeds previously possible only with dedicated hardware.

Performance

The remarkable performance of SwiftShader 2.0 is due to the highly sophisticated graphics engine that underlies the SwiftShader D3D8 and D3D9 DLLs. SwiftShader's core technology is based around a carefully tuned runtime dynamic code generation system known as "SwiftAsm".

MS Iridescent Butterfly running under SwiftShader 2.0 AMD's shader demo 'Iridescent Butterfly' running at high speed using SwiftShader 2.0 SwiftAsm provides developers with the ability to dynamically build and execute code entirely at runtime, with an easy-to-use and extremely flexible interface. SwiftAsm provides built-in facilities for register allocation and related low-level optimizations. By using SwiftAsm, developers can create code that is free of expensive branch instructions -- much of the branching can be dealt with once, at the time that SwiftAsm runtime-compiles code optimized for the input data being processed, instead of every time the code is run.

SwiftAsm provides a high-level assembly language that uses C++ style variables instead of registers. The SwiftAsm code generator then applies register allocation and various optimizations to the code to produce the final result. While the SwiftAsm input is based around the x86, MMX, and SSE instruction sets, the back end can be modified to generate code for alternate CPUs.

In addition to the benefits provided by SwiftAsm, SwiftShader makes use of advanced graphics algorithms to avoid calculations that will be made redundant by future operations. SwiftShader also provides a series of options that give developers control over a wide variety of quality settings. For example, SwiftShader allows applications to exert control over the precision level of transcendental functions used in shaders.

Multi-core support

SwiftShader 2.0 gains additional performance on multi-core systems through the use of a sophisticated job scheduling system that allows rendering tasks to take place on several CPUs simultaneously. SwiftShader includes controls to specify multi-core parameters such as the number of threads to use for rendering.

SwiftConfig runtime configuration

Finally, SwiftShader 2.0 includes a web-based configuration system called SwiftConfig. SwiftConfig allows developers to instantly see the effects of adjusting SwiftShader's quality and performance settings. The resulting configuration is automatically saved to an .ini file, which is used the next time the application is launched. The SwiftConfig webserver can of course be easily disabled.

Related Content:
SwiftShader Home

corner graphic corner graphic
Showcase
corner graphic corner graphic
corner graphic corner graphic
News
corner graphic corner graphic
corner graphic corner graphic
Spotlight
corner graphic corner graphic