All Projects → Zielon → CPURasterizer

Zielon / CPURasterizer

Licence: BSD-2-Clause License
CPU Based Rasterizer Engine

Programming Languages

C++
36643 projects - #6 most used programming language
c
50402 projects - #5 most used programming language
CMake
9771 projects

Projects that are alternatives of or similar to CPURasterizer

Taskflow
A General-purpose Parallel and Heterogeneous Task Programming System
Stars: ✭ 6,128 (+6089.9%)
Mutual labels:  parallel-computing, multithreading, parallel-programming
java-multithread
Códigos feitos para o curso de Multithreading com Java, no canal RinaldoDev do YouTube.
Stars: ✭ 24 (-75.76%)
Mutual labels:  parallel-computing, multithreading, parallel-programming
Xnnpack
High-efficiency floating-point neural network inference operators for mobile, server, and Web
Stars: ✭ 808 (+716.16%)
Mutual labels:  cpu, multithreading
Nnpack
Acceleration package for neural networks on multi-core CPUs
Stars: ✭ 1,538 (+1453.54%)
Mutual labels:  cpu, multithreading
ParallelQSlim
Shape Aware Parallel Mesh Simplification Algorithm
Stars: ✭ 84 (-15.15%)
Mutual labels:  parallel-computing, multithreading
Work Stealing Queue
A fast work-stealing queue template in C++
Stars: ✭ 124 (+25.25%)
Mutual labels:  parallel-computing, multithreading
Ctranslate2
Fast inference engine for OpenNMT models
Stars: ✭ 140 (+41.41%)
Mutual labels:  parallel-computing, avx2
Foundations of HPC 2021
This repository collects the materials from the course "Foundations of HPC", 2021, at the Data Science and Scientific Computing Department, University of Trieste
Stars: ✭ 22 (-77.78%)
Mutual labels:  parallel-computing, parallel-programming
cpuwhat
Nim utilities for advanced CPU operations: CPU identification, ISA extension detection, bindings to assorted intrinsics
Stars: ✭ 25 (-74.75%)
Mutual labels:  cpu, avx2
parallel-dfs-dag
A parallel implementation of DFS for Directed Acyclic Graphs (https://research.nvidia.com/publication/parallel-depth-first-search-directed-acyclic-graphs)
Stars: ✭ 29 (-70.71%)
Mutual labels:  parallel-computing, multithreading
rasterator
Real-time software rasterizer written in C++ with windowing and model loading support.
Stars: ✭ 15 (-84.85%)
Mutual labels:  cpu, computer-graphics
Pelagia
Automatic parallelization (lock-free multithreading thread) tool developed by Surparallel Open Source.Pelagia is embedded key value database that implements a small, fast, high-reliability on ANSI C.
Stars: ✭ 1,132 (+1043.43%)
Mutual labels:  parallel-computing, multithreading
Openmp Examples
openmp examples
Stars: ✭ 64 (-35.35%)
Mutual labels:  parallel-computing, multithreading
Boost.simd
Boost SIMD
Stars: ✭ 238 (+140.4%)
Mutual labels:  parallel-computing, avx2
Vc
SIMD Vector Classes for C++
Stars: ✭ 985 (+894.95%)
Mutual labels:  parallel-computing, avx2
Onemkl
oneAPI Math Kernel Library (oneMKL) Interfaces
Stars: ✭ 122 (+23.23%)
Mutual labels:  cpu, parallel-computing
Op rbf
Optimized Recursive Bilateral Filter
Stars: ✭ 47 (-52.53%)
Mutual labels:  multithreading, avx2
Hamsters.js
100% Vanilla Javascript Multithreading & Parallel Execution Library
Stars: ✭ 517 (+422.22%)
Mutual labels:  parallel-computing, multithreading
b-rabbit
A thread safe library that aims to provide a simple API for interfacing with RabbitMQ. Built on top of rabbitpy, the library make it very easy to use the RabbitMQ message broker with just few lines of code. It implements all messaging pattern used by message brokers
Stars: ✭ 15 (-84.85%)
Mutual labels:  parallel-computing, multithreading
Planeverb
Project Planeverb is a CPU based real-time wave-based acoustics engine for games. It comes with an integration with the Unity Engine.
Stars: ✭ 22 (-77.78%)
Mutual labels:  cpu, multithreading

CPURasterizer

Efficient CPU based rasterizer

CPU implementation of a very efficient rasterizer which utilizes AVX2 instructions and lock-free multi-threading programming. Using tiled rendering the program consumes 8 pixels at the same time, which together with std::execution threading library makes it very fast and robust. The viewer of the project is a very simple OpenGL applicatoin which renders a texture to a quad. The texture is generated by the CPU Renderer.h class. The pipeline contains most of the modern GPU rasterizers stages.

issues closed release windwos linux

Current development is available under project. Discussion about the project is available here.

Implemented stages include:

- Vertex Shader
- Clipping (Sutherland–Hodgman algorithm)
- Rasterization (Larrabee paper)
- Perspective Corrected Interpolation
- Fragment Shader
- Depth Testing

Except rasterization pipeline the project contains serveral additional features. (More features will be developed soon)

  • Tiled rendering using AVX2 (2x4 pixels tile)
  • Texture sampling
  • OpenGL viewer (only texture rendering)
  • C++17 (std::execution etc.)

Performance

All tests were done on CPU Intel i4790k with 4 cores. 60 fps is the maximum for GLFW window.

Scene Triangles Resolution Shader Filter FPS
Boy 85k 1280x720 Phong Nearest 35.2
Bedroom 1490k 1280x720 Phong Nearest 10.1
Panther 2004k 1280x720 Phong Nearest 6.3

How to run

All dependencies needed for the project can be downloaded using windows_install.bat for Windows or linux_install.sh for Linux. The project has Visual Studio 2019 solution and CMake project.

git-lfs must be installed in order to fetch scenes repository.

Assets

The scene description and assets are adapted from GLSL-PathTracer project [4]. The scenes repository will be automatically cloned during the installation process.

Rasterizer/Assets/PBRScenes/
    bedroom/
    coffee_cart/
    HDR/
    bedroom.scene
    coffee_cart.scene
    ...

References/Credits

[0] Optimizing the basic rasterizer
[1] Rasterization on larrabee
[2] Rasterization practical implementation
[3] EDXRaster

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].