Giter Site home page Giter Site logo

crystal's Introduction

Crystal

A D3D11 software rasterizer.

Crystal is primarly intended to be an educational tool for those developers interested in implementing parts of the rasterization pipeline or driver stack for a well established API. It is not a D3D11 API compiliant implementation like Microsoft's reference or WARP rasterizers.

The project's components are broken up into the their logical stack responsibilities.

D3D12 is not currently supported since the benefits and motivation for modern graphics APIs like it are outside the current goals of this project.

Install

Crystal is intended to be built with the Microsoft Visual Studio environment and build tools.

  1. Install CMake 3.16.0
  2. Install Visual Studio Community 2019
  3. Install the Windows SDK
  4. Install the Windows WDK
  5. Clone Repository & Build
git clone --recurse-submodules https://github.com/tnamet/Crystal
cd Crystal
cmake -B ./build -DWDK="C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0"

Check build.md for known build issues.

Use

Compilation will output several 64bit DLLs. The KMT can be supplied to one of the D3D11 device creation APIs. For example:

    D3D11CreateDevice(
        ...
        D3D_DRIVER_TYPE_SOFTWARE,
        LoadLibrary( "CrystalKmt64.dll" ),
        ...
    )

See the Smoke sample for initialization.

Components

Component Name Description
UMD Usern Mode Device Driver Drives creation of GPU work as a result of API calls made by the application.
KMT Kernel Mode Thunk Layer Interface between the OS, DX runtime, UMD, and rasterizer.
GMM Graphics Memory Manager Abstracts out memory layout
Raster Software Rasterizer Processes and renders a command stream
Common Common Common objects shared across all projects, debug interfaces
Samples Samples Sample projects for smoke testing
Tools Tools Git submodules, LLVM, auto-generation, and more.

Related Projects

crystal's People

Contributors

typesalot avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.