All Projects → cppjames → rendeer

cppjames / rendeer

Licence: other
A simple 3D rasterizer made from scratch in Python.

Programming Languages

python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to rendeer

Tinyrenderer
A brief computer graphics / rendering course
Stars: ✭ 11,776 (+11115.24%)
Mutual labels:  shaders, rasterizer
unity-shadergraph-sketches
🎨 Sketches made with ShaderGraph in Unity.
Stars: ✭ 47 (-55.24%)
Mutual labels:  shaders
MoPlugs
MotionBuilder Extensions Pack
Stars: ✭ 27 (-74.29%)
Mutual labels:  shaders
GPU-Zen-2-Baker
🥧 An OpenGL 4.x example of GPU Zen 2's ray casting techniques for baked texture generation chapter.
Stars: ✭ 32 (-69.52%)
Mutual labels:  shaders
Shader-Playgrounds
A WebGL shaders editor for beginners and otherwise.
Stars: ✭ 28 (-73.33%)
Mutual labels:  shaders
Tokenmagic
A Foundry VTT module that allows you to add animations and graphic effects to tokens, tiles, templates and drawings.
Stars: ✭ 28 (-73.33%)
Mutual labels:  shaders
DLAA
(DLAA) Directionally Localized antiAliasing
Stars: ✭ 18 (-82.86%)
Mutual labels:  shaders
Godot-3.0-Noise-Shaders
Godot 3.0 Noise Shaders
Stars: ✭ 38 (-63.81%)
Mutual labels:  shaders
rasterator
Real-time software rasterizer written in C++ with windowing and model loading support.
Stars: ✭ 15 (-85.71%)
Mutual labels:  rasterizer
nerv pathtracer
a pathtracer with physically based rendering in mind
Stars: ✭ 27 (-74.29%)
Mutual labels:  shaders
Height-Based-Gradient-Color-Shaders-for-Unity
Height Based 2 color gradient shaders for Unity
Stars: ✭ 18 (-82.86%)
Mutual labels:  shaders
ofxLSystem
3D turtle graphics interpretation of L-Systems
Stars: ✭ 39 (-62.86%)
Mutual labels:  shaders
cs paint
Vulkan rendering library for graphics and text
Stars: ✭ 79 (-24.76%)
Mutual labels:  shaders
compute-shader-101
Sample code for compute shader 101 training
Stars: ✭ 323 (+207.62%)
Mutual labels:  shaders
mathematical-sculptures
Generate custom parametric surfaces ✒️💠
Stars: ✭ 26 (-75.24%)
Mutual labels:  shaders
meShaderEd
The RenderMan Shader Editor
Stars: ✭ 21 (-80%)
Mutual labels:  shaders
GodotRetro
A pack of retro shaders to Godot!
Stars: ✭ 196 (+86.67%)
Mutual labels:  shaders
BezierCurves2D
An implementation of 2D Bezier Curves in C++ using OpenGL, gl3w, glfw3 and imgui.
Stars: ✭ 41 (-60.95%)
Mutual labels:  shaders
Camera2GLPreview
Android camera preview application using Camera2 API and OpenGL ES/Vulkan
Stars: ✭ 140 (+33.33%)
Mutual labels:  shaders
NovaShader
Multi-functional shader for the Particle System that supports Universal Render Pipeline (URP) of Unity.
Stars: ✭ 448 (+326.67%)
Mutual labels:  shaders

alt text

Rendeer

A basic 3D renderer made in Python, using the library Pillow.

alt text

Note: This application is currently in development. It has bugs and imperfections.

Getting started

These instructions will guide you through the installation and usage of Rendeer.

Requirements

This project was made using Python 3.6. You need to go to the official Python website and install Python 3.6 or a newer version. You also need the Pillow and the tqdm library, which you can install with the command:

pip install pillow tqdm

Usage

You should be able to run the program by simply opening rendeer.py. It will probably take up to a minute for the mesh to be rendered.

If you want to import a mesh from an .obj file, you now can! Simply open wavefront_importer.py and specify the path to the .obj file.

Note: Please triangulate your mesh before importing it unless you want it to look like this

If, for example, you want to import a mesh called tree.obj which is in the same folder as wavefront_importer.py, you would need to type

tree.obj

If it's in a folder called "Trees" that's in the same folder as wavefront_importer.py, you would need to type

Trees\tree.obj

Note: The four files (rendeer.py, meshes.py, settings.py, intersection.py and wavefront_importer.py) have to be all in the same directory for everything to work properly.

The data from the .obj file will be saved in a file called meshes.py. You can now run the renderer and it will display your mesh in an image. You might have to move/rotate your mesh in order to display it as you like.

Contributors

  • Special thanks to tweakimp for doing a lot of optimization and making the rendering time significantly shorter.

Changelog

What's new in 4.0.0?

  • ALAN (Animation Language) has been added: you can now create animations with ease! (no pun intended)

v3.0.0

Biggest update yet! Here are some key features:

  • You can now set the resolution so you can go Ultra HD (default resolution is 100)
  • calculating hard vertex normals is now up to 1000 times faster
  • Gouraud shading! Now your meshes are as smooth as they can get
  • many parts of the code have been rewritten, others are just gone

v2.3.0

  • shading modes! choose between flat diffuse, unlit and wireframe!
  • progress bars! stop staring into the void for a minute straight, now you can watch the program doing things
  • variables that the user should modify are in a separate file now (settings.py)
  • fixed problem with the mesh being too bright where light doesn't touch it

v2.2.0

  • now it has a Wavefront importer for your 3D models
  • it sorts faces by distance so it can now render them in the (almost) correct order.
  • it can now calculate hard vertex normals
  • I've fixed some of the 0x0BADC0DE.
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].