q2K BHP
Black History Portal
THE BHP WIRE —
HIDDEN TRUTHS
What's New!
THE JOURNEY THROUGH TIME

Explore Black History

Explore the people, places, events, achievements, struggles and stories that shaped our journey.

✊🏾

Civil Rights

Movements, leaders, victories and the continuing fight for equality.

⚙️

Black Inventors

Innovation, patents, science, technology and world-changing contributions.

🏆

Sports

Pioneers, champions, Negro Leagues, records, activism and excellence.

♟️

People

Meet the people whose lives, choices and achievements shaped the journey.

📍

Places

Black towns, communities, institutions and places where history happened.

📜

Events

Moments that changed communities, movements, institutions and the nation.

Enter a person, place, event, or topic.
MY'STORY

The MOVE Fire

This is a personal recollection on the Move fire on May 13, 1985 Philadelphia police fired thousands of rounds at the MOVE house, city officials approved dropping an explosive device on the roof, the resulting fire was allowed to burn, 11 people—including five children—died, and 61 homes were destroyed. Philadelphia City Council later called it a “brutal attack carried out by the City of Philadelphia on its own citizens” and acknowledged that no individual faced criminal consequences for the bombing. One timeline correction worth preserving for the BHP record: the major previous MOVE-police confrontation was August 8, 1978, about seven years before the bombing, not a year or two earlier. Officer James Ramp was killed, other police and firefighters were wounded, nine MOVE members were later convicted, and television cameras recorded police beating Delbert Africa during his arrest. The 1985 MOVE Commission later specifically criticized city planners for failing to adequately use lessons from that 1978 confrontation. And that actually strengthens the point you’re making: 1985 did not happen without precedent or institutional memory. There had already been a deadly confrontation with MOVE, years of conflict, negotiations and police involvement before Osage Avenue.

MORE →
BLACK FACTS
The Truths They Never Taught You...

The Violence That Helped Spark the NAACP

In August 1908, a white mob attacked Springfield, Illinois’s Black community, destroying homes and businesses and lynching two Black men. National outrage over the violence helped spur the movement that created the NAACP the following year.

MORE →
BHP gathered finds from its connected research sources. Showing the 4 strongest Black History matches.
← BACK TO RESULTS
Wikipedia

High-Level Shader Language

Cg/HLSL
A scene containing several different 2D HLSL shaders. Distortion of the statue is achieved purely physically, while the texture of the rectangular frame beside it is based on color intensity. The square in the background has been transformed and rotated. The partial transparency and reflection of the water in the foreground are added by a shader applied finally to the entire scene.
FamilyShading language
DeveloperNVIDIA, Microsoft
Dialects
Cg, HLSL, Playstation Shading Language, ReShadeFX, Slang
Influenced by
C, RenderMan Shading Language
Influenced
GLSL

The High-Level Shader Language[1] or High-Level Shading Language[2] (HLSL) is a proprietary shading language developed by Microsoft for the Direct3D 9 API to augment the shader assembly language, and went on to become the required shading language for the unified shader model of Direct3D 10 and higher. It was developed alongside the Cg (short for C for Graphics) shading language from Nvidia. Early versions of the two languages were considered identical, only marketed differently.[3]

Although Cg and HLSL share the same core syntax, some features of C were modified and new data types were added to make Cg/HLSL more suitable for programming graphics processing units.[4][5]

Two main branches of the Cg/HLSL language exist: the Nvidia Cg compiler (cgc) which outputs DirectX or OpenGL and the Microsoft HLSL which outputs DirectX shaders in bytecode format.[6][7] Nvidia's cgc was deprecated in 2012, with no additional development or support available.[8]

HLSL shaders can enable many special effects in both 2D and 3D computer graphics.

  • The Cg/HLSL language originally only included support for vertex shaders and pixel shaders ("fragment" in GLSL). A vertex shader is executed for each vertex that is submitted by the application, and is primarily responsible for transforming the vertex from object space to view space, generating texture coordinates, and calculating lighting coefficients such as the vertex's normal, tangent, and bitangent vectors. When a group of vertices (normally 3, to form a triangle) come through the vertex shader, their output position is interpolated to form pixels within its area; this process is known as rasterization.
  • DirectX 10 (Shader Model 4) and Cg 2.0 introduced geometry shaders.[9] This shader takes as its input some vertices of a primitive (triangle/line/point) and uses this data to generate/degenerate (or tessellate) additional primitives or to change the type of primitives, which are each then sent to the rasterizer.
  • DirectX 11 (Shader Model 5) introduced compute shaders (GPGPU) and tessellation shaders (hull and domain). The latter is present in Cg 3.1.
  • DirectX 12 (Shader Model 6.3) introduced ray tracing shaders (ray generation, intersection, any hit / closest hit / miss).

D3D11.3 and D3D12 introduced Shader Model 5.1[10] and later 6.0.[11]

Background

[edit]

Due to technical advances in graphics hardware, some areas of 3D graphics programming have become quite complex. To simplify the process, new features were added to graphics cards, including the ability to modify their rendering pipelines using vertex and pixel shaders.

In the beginning, vertex and pixel shaders were programmed at a very low level with only the assembly language of the graphics processing unit. Although using the assembly language gave the programmer complete control over code and flexibility, it was fairly hard to use. A portable, higher level language for programming the GPU was needed, so Cg was created to overcome these problems and make shader development easier.

Some of the benefits of using Cg/HLSL over assembly are:

  • High level code is easier to learn, program, read, and maintain than assembly code.
  • Cg/HLSL code is portable to a wide range of hardware and platforms, unlike assembly code, which usually depends on hardware and the platforms it's written for.
  • The Cg/HLSL compiler can optimize code and do lower level tasks automatically, which are hard to do and error-prone in assembly.

Language

[edit]

Data types

[edit]

Cg/HLSL has six basic data types. Some of them are the same as in C, while others are especially added for GPU programming. These types are:

  • float - a 32bit floating point number
  • half - a 16bit floating point number
  • int - a 32bit integer
  • fixed - a 12bit fixed point number
  • bool - a Boolean variable
  • sampler* - represents a texture object

Cg also features vector and matrix data types that are based on the basic data types, such as float3 and float4x4. Such data types are quite common when dealing with 3D graphics programming. Cg also has struct and array data types, which work in a similar way to their C equivalents.

Operators

[edit]

Cg supports a wide range of operators, including the common arithmetic operators from C, the equivalent arithmetic operators for vector and matrix data types, and the common logical operators.

Functions and control structures

[edit]

Cg shares the basic control structures with C, like if/else, while, and for. It also has a similar way of defining functions.[examples needed]

Semantics

[edit]

Preprocessor

[edit]

Cg implements many C preprocessor directives and its macro expansion system. It implements #include.[12]

HLSL features

[edit]
  • Namespace
  • Annotation

Environment

[edit]

Cg programs are built for different shader profiles that stand for GPUs with different capabilities.[13] These profiles decide, among others, how many instructions can be in each shader, how many registers are available, and what kind of resources a shader can use. Even if a program is correct, it might be too complex to work on a profile.[12]

As the number of profile and shader types cropped up, Microsoft has switched to use the term "Shader Model" to group a set of profiles found in a generation of GPUs.[14] Cg supports some of the newer profiles up to Shader Model 5.0 as well as translation to glsl or hlsl.[13]

GPUs listed are the hardware that first supported the given specifications. Manufacturers generally support all lower shader models through drivers. Note that games may claim to require a certain DirectX version, but don't necessarily require a GPU conforming to the full specification of that version, as developers can use a higher DirectX API version to target lower-Direct3D-spec hardware; for instance DirectX 9 exposes features of DirectX7-level hardware that DirectX7 did not, targeting their fixed-function T&L pipeline.

Pixel shader comparison

[edit]
Pixel shader version 1.0 1.1 1.2

1.3[15]

1.4[15] 2.0[15][16] 2.0a[15][16][17] 2.0b[15][16][18] 3.0[15][19] 4.0[20] 4.1[21]

5.0[22]

Dependent texture limit 4 4 4 6 8 Unlimited 8 Unlimited Unlimited
Texture instruction limit 4 4 4 6 * 2 32 Unlimited Unlimited Unlimited Unlimited
Arithmetic instruction limit 8 8 8 8 * 2 64 Unlimited Unlimited Unlimited Unlimited
Position register No No No No No No No Yes Yes
Instruction slots 8 8 + 4 8 + 4 (8 + 6) * 2 64 + 32 512 512 ≥ 512 ≥ 65536
Executed instructions 8 8 + 4 8 + 4 (8 + 6) * 2 64 + 32 512 512 65536 Unlimited
Texture indirections 4 4 4 4 4 Unlimited 4 Unlimited Unlimited
Interpolated registers 2 + 4 2 + 4 2 + 4 2 + 6 2 + 8 2 + 8 2 + 8 10 32
Instruction predication No No No No No Yes No Yes No
Index input registers No No No No No No No Yes Yes
Temp registers 2 2 + 4 3 + 4 6 12 to 32 22 32 32 4096
Constant registers 8 8 8 8 32 32 32 224 16×4096
Arbitrary swizzling No No No No No Yes No Yes Yes
Gradient instructions No No No No No Yes No Yes Yes
Loop count register No No No No No No No Yes Yes
Face register (2-sided lighting) No No No No No No Yes Yes Yes
Dynamic flow control No No No No No No No Yes (24) Yes (64)
Bitwise Operators No No No No No No No No Yes
Native Integers No No No No No No No No Yes
  • PS 1.0 — Unreleased 3dfx Rampage, DirectX 8
  • PS 1.1 — GeForce 3, DirectX 8
  • PS 1.2 — 3Dlabs Wildcat VP, DirectX 8.1
  • PS 1.3 — GeForce 4 Ti, DirectX 8.1
  • PS 1.4 — Radeon 8500–9250, Matrox Parhelia, DirectX 8.1
  • Shader Model 2.0 — Radeon 9500–9800/X300–X600, DirectX 9
  • Shader Model 2.0a — GeForce FX/PCX-optimized model, DirectX 9.0a
  • Shader Model 2.0b — Radeon X700–X850 shader model, DirectX 9.0b
  • Shader Model 3.0 — Radeon X1000 and GeForce 6, DirectX 9.0c
  • Shader Model 4.0 — Radeon HD 2000 and GeForce 8, DirectX 10
  • Shader Model 4.1 — Radeon HD 3000 and GeForce 200, DirectX 10.1
  • Shader Model 5.0 — Radeon HD 5000 and GeForce 400, DirectX 11
  • Shader Model 5.1 — GCN 1+, Fermi+, DirectX 12 (11_0+) with WDDM 2.0
  • Shader Model 6.0 — GCN 1+, Kepler+, DirectX 12 (11_0+) with WDDM 2.1
  • Shader Model 6.1 — GCN 1+, Kepler+, DirectX 12 (11_0+) with WDDM 2.3
  • Shader Model 6.2 — GCN 1+, Kepler+, DirectX 12 (11_0+) with WDDM 2.4
  • Shader Model 6.3 — GCN 1+, Kepler+, DirectX 12 (11_0+) with WDDM 2.5
  • Shader Model 6.4 — GCN 1+, Kepler+, Skylake+, DirectX 12 (11_0+) with WDDM 2.6
  • Shader Model 6.5 — GCN 1+, Kepler+, Skylake+, DirectX 12 (11_0+) with WDDM 2.7
  • Shader Model 6.6 — GCN 4+, Maxwell+, DirectX 12 (11_0+) with WDDM 3.0
  • Shader Model 6.7 — GCN 4+, Maxwell+, DirectX 12 (12_0+) with WDDM 3.1
  • Shader Model 6.8 — RDNA 1+, Maxwell 2+, Arc B-Series, DirectX 12 (12_0+) with WDDM 3.2 / Agility SDK for 3.1
  • Shader Model 6.9 — RDNA 3+, Turing+, Arc B-Series, DirectX 12 (12_0+) with Agility SDK


"32 + 64" for Executed Instructions means "32 texture instructions and 64 arithmetic instructions."

Vertex shader comparison

[edit]
Vertex shader version 1.0 1.1[23] 2.0[16][23][17] 2.0a[16][23][17] 3.0[19][23] 4.0[20]
4.1[21]
5.0[22]
# of instruction slots 128 128 256 256 ≥ 512 ≥ 65536
Max # of instructions executed 128 128 1024 65536 65536 Unlimited
Instruction predication No No No Yes Yes Yes
Temp registers 12 12 12 16 32 4096
# constant registers ≥ 96 ≥ 96 ≥ 256 256 ≥ 256 16×4096
Address register No Yes Yes Yes Yes Yes
Static flow control No No Yes Yes Yes Yes
Dynamic flow control No No No Yes Yes Yes
Dynamic flow control depth N/a N/a N/a 24 24 64
Vertex texture fetch No No No No Yes Yes
# of texture samplers N/a N/a N/a N/a 4 128
Geometry instancing support No No No No Yes Yes
Bitwise operators No No No No No Yes
Native integers No No No No No Yes

The standard library

[edit]

As in C, Cg/HLSL features a set of functions for common tasks in GPU programming. Some of the functions have equivalents in C, like the mathematical functions abs and sin, while others are specialized in GPU programming tasks, like the texture mapping functions tex1D and tex2D.

The Cg/HLSL runtime library

[edit]

Cg/HLSL programs are merely vertex and pixel shaders, and they need supporting programs that handle the rest of the rendering process. Cg can be used with two graphics APIs: OpenGL or DirectX. Each has its own set of Cg functions to communicate with the Cg program, like setting the current Cg shader, passing parameters, and such tasks. (HLSL only targets DirectX.)

In addition to being able to compile Cg source to assembly code, the Cg runtime also has the ability to compile shaders during execution of the supporting program. This allows the runtime to compile the shader using the latest optimizations available for hardware that the program is currently executing on. However, this technique requires that the source code for the shader be available in plain text to the compiler, allowing the user of the program to access the source-code for the shader. Some developers view this as a major drawback of this technique.

To avoid exposing the source code of the shader, and still maintain some of the hardware specific optimizations, the concept of profiles was developed. Shaders can be compiled to suit different graphics hardware platforms (according to profiles). When executing the supporting program, the best/most optimized shader is loaded according to its profile. For instance there might be a profile for a graphics card that supports complex pixel shaders, and another profile for one that supports only minimal pixel shaders. By creating a pixel shader for each of these profiles a supporting program enlarges the number of supported hardware platforms without sacrificing picture quality on powerful systems.'

Compilers and dialects

[edit]

The Cg dialect has only ever had one compiler, in the form of Nvidia's Cg toolkit.

Microsoft has released two compilers for HLSL. The original compiler was the closed-source FXC (Effect Compiler), supported until 2015. It was deprecated in favor of the open-source LLVM-based DXC (DirectXShaderCompiler) with support for newer HLSL features.[24] Both compilers generate bytecode: while the older FXC used DXBC, DXC now uses DXIL. DXC can also emit SPIR-V bytecode.[25]

The Khronos Group has also written a LLVM-based HLSL compiler, in the form of a frontend for glslang, their GLSL-to-SPIR_V compiler. Support for SPIR-V means that the shaders can be cross-platform, no longer limiting them to a DirectX stack.[26] This task was previously performed by source-level converters like HLSL2GLSL, but the resulting code is often bloated.[27]

Derived languages

[edit]

The PlayStation Shader Language (PSSL) is based on Cg/HLSL.[28]

The ReshadeFX shading language is also based on Cg/HLSL. Shaders written in ReshadeFX are compiled to OpenGL, DX, or Vulkan and injected into games to act as post-processing filters.[29]

Khronos has since evolved glslang into slang, a shading language and compiler that is mostly source-code-compatible with HLSL. Slang can compile to textual shading languages (GLSL, MSL, CUDA, WGSL), bytecodes (D3D11, D3D12, Vulkan SPIR-V) as well as the CPU. It also has a GLSL-compatibility mode.[30]

Applications and games that use Cg or HLSL

[edit]

See also

[edit]

References

[edit]
  1. ^ "Writing HLSL Shaders in Direct3D 9". Microsoft Docs. Retrieved February 22, 2021.
  2. ^ "High-level shader language (HLSL)". Microsoft Docs. Retrieved February 22, 2021.
  3. ^ "Fusion Industries :: Cg and HLSL FAQ ::". August 24, 2012. Archived from the original on August 24, 2012.
  4. ^ "Fusion Industries :: Cg and HLSL FAQ ::". August 24, 2012. Archived from the original on August 24, 2012.
  5. ^ "The Cg Tutorial - Chapter 1. Introduction". developer.download.nvidia.cn.
  6. ^ "Writing HLSL Shaders in Direct3D 9 (Windows)". msdn.microsoft.com. May 24, 2021.
  7. ^ "Cg FAQ". NVIDIA DesignWorks. March 8, 2011. Retrieved May 25, 2017.
  8. ^ "Cg Toolkit | NVIDIA Developer". March 8, 2011.
  9. ^ "Cg 2.0 Release Notes" (PDF). nvidia.com. January 2008.
  10. ^ "Shader Model 5.1 Objects". Microsoft Docs. Retrieved February 22, 2021.
  11. ^ "HLSL Shader Model 6.0". Microsoft Docs. Retrieved February 22, 2021.
  12. ^ a b Mark J. Kilgard, Cg in Two Pages, 2003.
  13. ^ a b "Cg Profile Documentation". Nvidia developer.
  14. ^ "Shader Models vs Shader Profiles - Win32 apps". docs.microsoft.com. June 30, 2021.
  15. ^ a b c d e f "Pixel Shader Differences". Microsoft Docs. August 19, 2020. Retrieved February 22, 2021.
  16. ^ a b c d e Peeper, Craig; Mitchell, Jason L. (July 2003). "Introduction to the DirectX 9 High-Level Shader Language". Microsoft Docs. Retrieved February 22, 2021.
  17. ^ a b c Shimpi, Anand Lal. "NVIDIA Introduces GeForce FX (NV30)". AnandTech. Archived from the original on June 10, 2013. Retrieved February 22, 2021.
  18. ^ Wilson, Derek. "ATI Radeon X800 Pro and XT Platinum Edition: R420 Arrives". AnandTech. Archived from the original on September 28, 2012. Retrieved February 22, 2021.
  19. ^ a b Shader Model 3.0, Ashu Rege, NVIDIA Developer Technology Group, 2004.
  20. ^ a b The Direct3D 10 System, David Blythe, Microsoft Corporation, 2006.
  21. ^ a b "Registers - ps_4_1". Microsoft Docs. August 23, 2019. Retrieved February 22, 2021.
  22. ^ a b "Registers - ps_5_0". Microsoft Docs. August 23, 2019. Retrieved February 22, 2021.
  23. ^ a b c d "Vertex Shader Differences". Microsoft Docs. August 19, 2020. Retrieved February 22, 2021.
  24. ^ "Porting from FXC to DXC". GitHub.
  25. ^ "microsoft/DirectXShaderCompiler: This repo hosts the source for the DirectX Shader Compiler which is based on LLVM/Clang". Microsoft. October 21, 2020.
  26. ^ "glslang: Khronos-reference front end for GLSL/ESSL, partial front end for HLSL, and a SPIR-V generator". The Khronos Group. October 21, 2020.
  27. ^ Matt Turner. Video on YouTube.
  28. ^ Stenson, Richard; Ho, Chris. "PlayStation Shading Language for PS4". GDC Europe 2013.
  29. ^ "ReShade FX shading language". GitHub. February 15, 2022.
  30. ^ "shader-slang/slang". The Slang Shading Language. December 8, 2025.
  31. ^ "Maya Cg Plug-in | NVIDIA".
  32. ^ "LightWave - 11.6 Features Overview".
  33. ^ "Unity - Manual: Writing Shaders".

Further reading

[edit]
[edit]

Source: Wikipedia. Article content is retrieved live through the MediaWiki API.

No preview image
Wikipedia

HLSL2GLSL

HLSL2GLSL is a command line tool and a library that translates shaders written in High Level Shader Language (HLSL) for Direct3D 9 into the OpenGL Shading Language (GLSL). HLSL2GLSL was originally released by ATI Technologies under a BSD License. The last release was v0.9 from 2006. HLSL2GLSL is not part of GPUOpen. The project was forked in 2010 to fix issues and add features like OpenGL ES support. It is now used by Unity and OGRE to translate Cg/HLSL shaders into GLSL for mobile platforms. The project has been criticized for generating low-quality, bloated code. At the XDC2014, Matt Turner pointed out that many benchmark examples in Mesa's shader-db are generated by conversion and of poor quality.

MORE →
Wikipedia

High-Level Shader Language

The High-Level Shader Language or High-Level Shading Language (HLSL) is a proprietary shading language developed by Microsoft for the Direct3D 9 API to augment the shader assembly language, and went on to become the required shading language for the unified shader model of Direct3D 10 and higher. It was developed alongside the Cg (short for C for Graphics) shading language from Nvidia. Early versions of the two languages were considered identical, only marketed differently. Although Cg and HLSL share the same core syntax, some features of C were modified and new data types were added to make Cg/HLSL more suitable for programming graphics processing units. Two main branches of the Cg/HLSL language exist: the Nvidia Cg compiler (cgc) which outputs DirectX or OpenGL and the Microsoft HLSL which outputs DirectX shaders in bytecode format. Nvidia's cgc was deprecated in 2012, with no additional development or support available. HLSL shaders can enable many special effects in both 2D and 3D computer graphics. The Cg/HLSL language originally only included support for vertex shaders and pixel shaders ("fragment" in GLSL). A vertex shader is executed for each vertex that is submitted by the application, and is primarily responsible for transforming the vertex from object space to view space, generating texture coordinates, and calculating lighting coefficients such as the vertex's normal, tangent, and bitangent vectors. When a group of vertices (normally 3, to form a triangle) come through the vertex shader, their output position is interpolated to form pixels within its area; this process is known as rasterization. DirectX 10 (Shader Model 4) and Cg 2.0 introduced geometry shaders. This shader takes as its input some vertices of a primitive (triangle/line/point) and uses this data to generate/degenerate (or tessellate) additional primitives or to change the type of primitives, which are each then sent to the rasterizer. DirectX 11 (Shader Model 5) introduced compute shaders (GPGPU) and tessellation shaders (hull and domain). The latter is present in Cg 3.1. DirectX 12 (Shader Model 6.3) introduced ray tracing shaders (ray generation, intersection, any hit / closest hit / miss). D3D11.3 and D3D12 introduced Shader Model 5.1 and later 6.0.

MORE →
Wikipedia

Vvvv

vvvv (German pronunciation: [faʊfiːɐ̯] = "Vau Vier" or "v4") is a general-purpose digital toolkit with a special focus on real-time video synthesis and programming of large media environments with physical interfaces, real-time motion graphics, audio and video. vvvv uses a dataflow approach and a visual programming interface for rapid prototyping and developing. Applications written in vvvv are commonly called patches. Patches consist of a network of nodes. Patches can be created, edited and tested while they are running. Patches are stored on the disk in standard XML format. vvvv is written in Borland Delphi, and plugins can be developed in the .NET Framework in C#. Most nodes handle data in a one-dimensional array of values, called Spreads. In addition to traditional vector algebra, this allows programming of particle systems, as also rendering nodes and deal with arrays of values accordingly. If an operation has to deal with arrays of different lengths, the shorter array gets repeated to fill up the larger. vvvv includes a feature it calls boygrouping, where one computer controls a number of slave computers to operate in parallel, with all programming and editing done on the master computer. The toolkit has the ability to work with HLSL shaders which are written in their common textual form but are embedded in the data flow language and are instantly compiled and uploaded as soon any part of their source code is changed. With a focus on video synthesis and processing, vvvv beta uses the toolkit DirectX and, as such, is available for Microsoft Windows systems only, although it is known to run stably under Parallels and VMware Fusion. vvvv currently supports DirectX 9 (including PS 3 and VS 3 shader techniques) and DirectX 11. In April 1, 2020, vvvv gamma, a new version of the software, reprogrammed from scratch, was publicly released. vvvv was initially developed by the Frankfurt-based media collective MESO as an in-house tool for their own projects, but was then released. vvvv is now maintained by the VVVV group. vvvv beta and vvvv gamma are free for non-commercial, educational and evaluation use, based on their "T.R.U.S.T. model", and are available for download at its websites. Any commercial use requires a license.

MORE →
No preview image
Wikipedia

Direct3D

Direct3D is a graphics application programming interface (API) for Microsoft Windows. Part of DirectX, Direct3D is used to render three-dimensional graphics in applications where performance is important, such as games. Direct3D uses hardware acceleration if available on the graphics card, allowing for hardware acceleration of the entire 3D rendering pipeline or even only partial acceleration. Direct3D exposes the advanced graphics capabilities of 3D graphics hardware, including Z-buffering, W-buffering, stencil buffering, spatial anti-aliasing, alpha blending, color blending, mipmapping, texture blending, clipping, culling, atmospheric effects, perspective-correct texture mapping, programmable HLSL shaders and effects. Integration with other DirectX technologies enables Direct3D to deliver such features as video mapping, hardware 3D rendering in 2D overlay planes, and even sprites, providing the use of 2D and 3D graphics in interactive media ties. Direct3D contains many commands for 3D computer graphics rendering; however, since version 8, Direct3D has superseded the DirectDraw framework and also taken responsibility for the rendering of 2D graphics. Microsoft strives to continually update Direct3D to support the latest technology available on 3D graphics cards. Direct3D offers full vertex software emulation but no pixel software emulation for features not available in hardware. For example, if software programmed using Direct3D requires pixel shaders and the video card on the user's computer does not support that feature, Direct3D will not emulate it, although it will compute and render the polygons and textures of the 3D models, albeit at a usually degraded quality and performance compared to the hardware equivalent. The API does include a Reference Rasterizer (or REF device), which emulates a generic graphics card in software, although it is too slow for most real-time 3D applications and is typically only used for debugging. A new real-time software rasterizer, WARP, designed to emulate the complete feature set of Direct3D 10.1, is included with Windows 7 and Windows Vista Service Pack 2 with the Platform Update; its performance is said to be on par with lower-end 3D cards on multi-core CPUs. As part of DirectX, Direct3D is available for Windows 95 and above, and is the base for the vector graphics API on the different versions of Xbox console systems. The Wine compatibility layer, a free software reimplementation of several Windows APIs, includes an implementation of Direct3D. Direct3D's main competitor is Khronos' OpenGL and its follow-on Vulkan. Fahrenheit was an attempt by Microsoft and SGI to unify OpenGL and Direct3D in the 1990s, but was eventually cancelled.

MORE →
TOPIC OF THE DAY

Greenwood / Black Wall Street

Before the 1921 destruction of Tulsa’s Greenwood District, Black residents had created a remarkable center of business and community life. The district included stores, professional offices, entertainment venues and homes owned by Black citizens. Understanding Greenwood means learning what was built—not only what was burned.

MORE →
TRIVIA QUESTION OF THE DAY

Who became the first Black woman to travel into space?

Mae Jemison, aboard Space Shuttle Endeavour in 1992.