Skip to content

Dual Rasterizer

A dual-mode 3D rasterizer supporting both hardware-accelerated (DirectX 11) and software-based (CPU) rendering

Project Overview

The Dual Rasterizer offers a flexible 3D rendering framework that can switch between hardware-accelerated (DirectX 11) and software-based (CPU) rendering at runtime to compare performance and visual output.

Hardware Rendering

Leverages DirectX 11 GPU pipeline for accelerated rendering with advanced features.

Software Rendering

Custom CPU-based rasterizer implementing fundamental graphics pipeline concepts.

Shading Techniques

Multiple shading modes including combined, observed area, diffuse, and specular.

Rendering Comparison

Drag the slider to compare hardware-accelerated rendering (DirectX 11) with software-based rendering (CPU)

Hardware Rendering
HARDWARE RENDERING
Software Rendering
SOFTWARE RENDERING

Key Features

Shading Techniques

  • Combined (Diffuse + Specular)
  • Observed Area (Ambient Occlusion)
  • Diffuse only
  • Specular only

Texture Mapping

  • UV interpolation
  • Normal mapping support
  • Transparent Fire Effect
  • Alpha blending

Visualization & Debugging

  • Depth buffering visualization
  • Bounding box visualization
  • Camera system with configurable matrices
  • Culling modes (Back, Front, None)

Interactive Controls

F1
Toggle Rasterizer Mode (HARDWARE/SOFTWARE)
Shared
F2
Toggle Vehicle Rotation
Shared
F3
Toggle FireFX
Shared
F4
Cycle Sampler State
Hardware
F5
Cycle Shading Mode
Software
F6
Toggle NormalMap
Software
F7
Toggle DepthBuffer Visualization
Software
F8
Toggle BoundingBox Visualization
Software
F9
Cycle CullMode
Shared
F10
Toggle Uniform ClearColor
Shared
F11
Toggle Print FPS
Shared

Technical Details

Software Rasterizer

  • Custom vertex shader equivalent on CPU
  • Barycentric coordinate-based triangle rasterization
  • Z-buffer implementation with per-pixel depth testing
  • UV coordinate interpolation and sampling
  • Normal mapping for enhanced surface detail

Hardware Renderer

  • DirectX 11 device and swap chain configuration
  • HLSL vertex and pixel shaders
  • Sampler states (Point, Linear, Anisotropic)
  • Depth stencil for depth testing
  • Render-to-texture for effects

Designed and built by Ivans Minajevs.