Coder Social home page Coder Social logo

angelo1211 / softwarerenderer Goto Github PK

View Code? Open in Web Editor NEW
586.0 17.0 62.0 215.02 MB

Software rendering engine with PBR. Built from scratch on C++.

License: MIT License

C++ 94.97% CMake 5.03%
rendering-engine 3d-graphics prototype software-rendering physically-based-rendering parallelization rasterization graphics sdl2 c-plus-plus

softwarerenderer's Issues

Improve build and usage instructions

It is not clear how to build and use the software. I initially did cmake .; make; ./softwareRenderer. Only after I did mkdir build; cd build; cmake ..; make; ./softwareRenderer could I test the program.

Performance scaling?

Very nice work! I am curious whether you have tried this on a many-core CPU, with 32 or 64 cores? Does the performance scale well?

Missing License

Hey Angel,

I saw your post on twitter and checked the project. I've been looking for candidates that I can use as experiments for ISPC, the Intel SPMD Program Compiler. I'd love to use this project, you've done a very good job with organization so I think it's a good fit. However I can't experiment with your code as it's unlicensed.

If you were to choose MIT or Apache 2.0 I'd love to experiment with ISPC implementations for certain functions.

Namely:
void SoftwareRenderer::drawTriangularMesh(Model * currentModel)
void Rasterizer::drawTriangles(Vector3f *vertices, IShader &shader, Buffer *pixelBuffer, Buffer *zBuffer)

Cheers,

Pete

A more "standard" build

I saw you produced a binary for Windows with some variation of the Mingw theme, but I was curious how the Visual Studio toolchain would fair. It looks like there are bits of syntax and constants that are not part of the C++ spec, so I inserted into geometry.h

`#ifndef M_PI
#define M_PI 3.14159265358979323846
#endif

define M_1_PIf32 (0.318309886183790671537767526745028724) /* 1/pi */`

That went OK for a while but I borked hard with:

`
C:\Repos\SoftwareRenderer\include\shader.h(286): warning C4305: 'initializing': truncation from 'double' to 'float'
C:\Repos\SoftwareRenderer\include\shader.h(304): warning C4244: 'initializing': conversion from 'double' to 'float', possible loss of data
C:\Repos\SoftwareRenderer\include\shader.h(314): warning C4244: '=': conversion from 'double' to 'float', possible loss of data
C:\Repos\SoftwareRenderer\include\shader.h(381): error C2131: expression did not evaluate to a constant
C:\Repos\SoftwareRenderer\include\shader.h(378): note: failure was caused by a read of a variable outside its lifetime
C:\Repos\SoftwareRenderer\include\shader.h(378): note: see usage of 'this'
C:\Repos\SoftwareRenderer\include\shader.h(382): error C2131: expression did not evaluate to a constant
C:\Repos\SoftwareRenderer\include\shader.h(378): note: failure was caused by a read of a variable outside its lifetime
C:\Repos\SoftwareRenderer\include\shader.h(378): note: see usage of 'this'
C:\Repos\SoftwareRenderer\include\shader.h(383): error C2131: expression did not evaluate to a constant
C:\Repos\SoftwareRenderer\include\shader.h(378): note: failure was caused by a read of a variable outside its lifetime
C:\Repos\SoftwareRenderer\include\shader.h(378): note: see usage of 'this'
C:\Repos\SoftwareRenderer\include\shader.h(386): error C2131: expression did not evaluate to a constant
C:\Repos\SoftwareRenderer\include\shader.h(378): note: failure was caused by a read of a variable outside its lifetime
C:\Repos\SoftwareRenderer\include\shader.h(378): note: see usage of 'this'
C:\Repos\SoftwareRenderer\include\shader.h(387): error C2131: expression did not evaluate to a constant
C:\Repos\SoftwareRenderer\include\shader.h(378): note: failure was caused by a read of a variable outside its lifetime
C:\Repos\SoftwareRenderer\include\shader.h(378): note: see usage of 'this'
C:\Repos\SoftwareRenderer\include\shader.h(388): error C2131: expression did not evaluate to a constant
C:\Repos\SoftwareRenderer\include\shader.h(378): note: failure was caused by a read of a variable outside its lifetime
C:\Repos\SoftwareRenderer\include\shader.h(378): note: see usage of 'this'
C:\Repos\SoftwareRenderer\include\shader.h(389): error C2131: expression did not evaluate to a constant
C:\Repos\SoftwareRenderer\include\shader.h(378): note: failure was caused by a read of a variable outside its lifetime
C:\Repos\SoftwareRenderer\include\shader.h(378): note: see usage of 'this'
C:\Repos\SoftwareRenderer\include\shader.h(390): error C2131: expression did not evaluate to a constant
C:\Repos\SoftwareRenderer\include\shader.h(378): note: failure was caused by a read of a variable outside its lifetime
C:\Repos\SoftwareRenderer\include\shader.h(378): note: see usage of 'this'
C:\Repos\SoftwareRenderer\include\shader.h(391): error C2131: expression did not evaluate to a constant
C:\Repos\SoftwareRenderer\include\shader.h(378): note: failure was caused by a read of a variable outside its lifetime
C:\Repos\SoftwareRenderer\include\shader.h(378): note: see usage of 'this'
C:\Repos\SoftwareRenderer\include\shader.h(392): error C2131: expression did not evaluate to a constant
C:\Repos\SoftwareRenderer\include\shader.h(378): note: failure was caused by a read of a variable outside its lifetime
C:\Repos\SoftwareRenderer\include\shader.h(378): note: see usage of 'this'
C:\Repos\SoftwareRenderer\include\shader.h(393): error C2131: expression did not evaluate to a constant
C:\Repos\SoftwareRenderer\include\shader.h(378): note: failure was caused by a read of a variable outside its lifetime
C:\Repos\SoftwareRenderer\include\shader.h(378): note: see usage of 'this'
C:\Repos\SoftwareRenderer\include\shader.h(399): error C3863: array type 'Vector3f [maxLights]' is not assignable
C:\Repos\SoftwareRenderer\include\shader.h(405): error C3001: 'simd': expected an OpenMP directive name
C:\Repos\SoftwareRenderer\include\shader.h(407): error C3863: array type 'Vector3f [maxLights]' is not assignable
C:\Repos\SoftwareRenderer\include\shader.h(409): error C3863: array type 'float [maxLights]' is not assignable
C:\Repos\SoftwareRenderer\include\shader.h(414): error C3863: array type 'float [maxLights]' is not assignable
C:\Repos\SoftwareRenderer\include\shader.h(415): error C3863: array type 'float [maxLights]' is not assignable
C:\Repos\SoftwareRenderer\include\shader.h(417): error C3863: array type 'Vector3f [maxLights]' is not assignable
C:\Repos\SoftwareRenderer\include\shader.h(418): error C3863: array type 'float [maxLights]' is not assignable
C:\Repos\SoftwareRenderer\include\shader.h(419): error C3863: array type 'Vector3f [maxLights]' is not assignable
C:\Repos\SoftwareRenderer\include\shader.h(422): error C3863: array type 'Vector3f [maxLights]' is not assignable
C:\Repos\SoftwareRenderer\include\shader.h(425): warning C4305: 'argument': truncation from 'double' to 'const T'

`

Unfortunately I don't know at all what happens around line 378 but here it is

` const int maxLights = numLights;

    //Fresnel, normal distribution function and geometry occlusion 
    Vector3f F[maxLights];`

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.