The next step was to get depth testing up and running. I had briefly toyed with the idea of doing some sort of triangle sorting, but decided against it in the end for several reasons. First, it wouldn't be practical for my pipeline, which processes one triangle at a time and doesn't rely on having …
I've finally found time to implement the first few steps of rasterization.
The first thing I implemented was a triangle fill function. I pretty much just started with the "brute-force" approach, which was basically my own best guess at an implementation. I basically started by sorting the points of …
The first thing I implemented was a triangle fill function. I pretty much just started with the "brute-force" approach, which was basically my own best guess at an implementation. I basically started by sorting the points of …
I haven't had a whole lot of time to work on this lately, but the project is still alive and well!
I finally got around to implement frustum clipping. Specifically, I added clipping in NDC space for its efficiency and code simplicity.
There were several issues I had to overcome for this...
1) I had to…
I finally got around to implement frustum clipping. Specifically, I added clipping in NDC space for its efficiency and code simplicity.
There were several issues I had to overcome for this...
1) I had to…
The next step was to add a perspective projection transformation.
I made the following changes for this:
1) Added a projection matrix in the Renderer class and the following function for generating the matrix:
int SetPerspective(float aFov, float aAspectRatio, float aNear, float aFar);
This function cr…
I made the following changes for this:
1) Added a projection matrix in the Renderer class and the following function for generating the matrix:
int SetPerspective(float aFov, float aAspectRatio, float aNear, float aFar);
This function cr…
The next step was to add a view transformation to the vertex stage. I decided to go with a right-handed view frame to avoid the extra reflection. I implemented a "LookAt" function to the renderer interface to generate the view matrix and used this to transform each vertex from world to view.
The fo…
The fo…
The next step was to add world transformations. I added a world matrix to my Renderer class along with added rotate, translate, and scale functions similar to those of OpenGL. When the draw function is called, the world matrix updates the world matrix in the VertexEngine, and the VertexEngine multi…
...
The next step was to plan out the organization of my project. I wanted my aggregate my project into an application and a graphics library and I wanted to interface to the graphics library to similar to a simplified version of OpenGL. The idea (again not to plan to far ahead) is to be able to wri…
The next step was to plan out the organization of my project. I wanted my aggregate my project into an application and a graphics library and I wanted to interface to the graphics library to similar to a simplified version of OpenGL. The idea (again not to plan to far ahead) is to be able to wri…
To put the timeline into perspective, I'll probably be putting on avg 1-2 hours per day on this project, maybe more if my daily schedule permits.
Ok, so I actually starting writing this renderer several days ago and I think i've gotten a faily good starting point.
A few general points on the platfor…
Ok, so I actually starting writing this renderer several days ago and I think i've gotten a faily good starting point.
A few general points on the platfor…
So for the longest time i've been trying to find time to write a software 3d renderer "for fun" and i've finally have the time to start such a project. The main goal of this project will be to solidify my knowledge of fundamental rasterization rendering techniques. Off the top of my head, the basic…
Advertisement
Popular Blogs
Advertisement