Giter Club home page Giter Club logo

bsr's Introduction

Bogdan Software Rasterizer (BSR)

This project is a software rasterizer able to render 3D graphics in real time and save the rendered results to disk.

Requirements

The only supported platform is Windows (7 all the way up to 11 on both 32 and 64 bit architectures).

It is necessary to be compiled with MSVC. The C++ version used is C++20.

Getting started

It works out of the box since I only use relative paths and the project does not have external dependencies.

Controls

W, A, S, D, Shift and Space move the camera.

The arrow keys, F7 and F8 rotate your head around.

F5 renders the scene with PBR and saves it to disk.

F6 swaps projection type.

F3 decreases the FOV.

F4 increases the FOV.

Escape closes the app.

F11 toggles full screen on or off.

Copy right

I am not the author of the amazing PBR materials, nor the HDR sIBL environment maps. I got them from https://freepbr.com and http://www.hdrlabs.com/sibl/archive.html. I only use them to test my software and I do not own any ownership over them.

The actual software is free for anyone as long as it is not used commercially, but as an educational resource or an external dependency for personal projects. With that said, I do not assume responsibility for anything that might happen because of using this software. All rights reserved.

Features

  • Rasterizer (fully featured)

Render example

  • Deferred renderer with PBR pipeline

Deferred example

  • Real time Phong

Phong example

  • Texture sampling with wrapping (repeat, mirror, clamp and black) and filtering (nearest and bi-linear)

Texture sampling example

What I would like to add (if I have enough patience)

  • Cascaded shadow maps with PCSS and PCF

  • SSR

  • SSAO

  • Allow the fog to have the color of the env map

  • Allow texture wrapping and lerping on individual component

  • Depth of field

  • Orbit camera

  • Focal length

  • Fish eye lens

  • MSAA

  • Scene Hierarchy

  • Improve Model loader (optimize vertex pool)

  • Load mtllib as well

  • Save compressed Model

  • Add Transform and Material on Mesh

  • Add Transform on Model

  • Generate iradiance map on startup

  • Generate BRDF LUT on startup

  • Generate prefiltered convoluted maps on startup

  • Check for bugs in the composit fragment shader, PBR related math functions and light calculations

bsr's People

Contributors

bogdy555 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

Forkers

error1000

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.