After two posts of theory, and some necessary changes to my classes, the first prototype deferred renderer is ready.
In this post we see the actual results of different G-Buffer formats.
Monday, April 29, 2013
Saturday, April 27, 2013
Deferred Shading - The G-Buffer
From my point of view, most important aspect and point of interest so far in a classic deferred renderer is the G-Buffer.
As they say, the devil is in the details - while it is a quite simple and elegant idea (storing material properties per-pixel instead of calculating results at first pass), it can get quite involved as soon as you enter the real, performance-optimized, world.
Sunday, April 21, 2013
Deferred shading - some theory
All right, this post will be a little incomplete due to extreme lack of time the past days.
Two words for theory, and a promise of an update to the post with some screenshots in the week.
Monday, April 15, 2013
Multiple shadow-casting lights, long overdue
Ok, I admit it. So far, I cheated. I only used a single light, with provision but without implementation for multiple lights, especially shadow-casting ones.
Screenshot first, talk later.
Screenshot first, talk later.
Sunday, April 14, 2013
True displacement mapping with tessellation
Well, we are now officially in 2013+ territory.
The techniques implemented here actually will not work unless you have a new generation graphics card capable of OpenGL 4.2 or DirectX 11.
Displacement mapping, as a theory, is not new. It is in fact quite simpler in essence than bump mapping. But the implementation has a big problem.
The techniques implemented here actually will not work unless you have a new generation graphics card capable of OpenGL 4.2 or DirectX 11.
Displacement mapping, as a theory, is not new. It is in fact quite simpler in essence than bump mapping. But the implementation has a big problem.
Saturday, April 13, 2013
Parallax Mapping (or, tangent space revisited)
The eye gets used to what it's seeing quite soon.
Normal mapping is actually an order of magnitude more realistic that classic texturing.
But the illusion is fragile. The illusion of depth is quite easy to see through as soon as the viewing angle changes - the real flatness of the surface becomes apparent, or at least easily detectable, soon enough.
Something more is needed, something basically unrelated to normal mapping, but ultimately similar in tools to it.
Parallax mapping, or, the simplest form of Virtual Displacement Mapping.
Normal mapping is actually an order of magnitude more realistic that classic texturing.
But the illusion is fragile. The illusion of depth is quite easy to see through as soon as the viewing angle changes - the real flatness of the surface becomes apparent, or at least easily detectable, soon enough.
Something more is needed, something basically unrelated to normal mapping, but ultimately similar in tools to it.
Parallax mapping, or, the simplest form of Virtual Displacement Mapping.
Friday, April 12, 2013
Spot the difference?
Thursday, April 11, 2013
DirectX takes shape
While it might not be the most efficient way to create to parallel libraries, the "Big Bang" technique sometimes has its merits. Here I describe the first steps of porting the GR Graphics library to DirectX.
Wednesday, April 10, 2013
Hello, DirectX
The biggest, step apart from the first, was putting my money where my mouth is.
Actually proving that GR Graphics design was Api - Agnostic.
That I could expose the same classes to use DirectX or OpenGl, even though I had not finished templatizing everything yet.
Actually proving that GR Graphics design was Api - Agnostic.
That I could expose the same classes to use DirectX or OpenGl, even though I had not finished templatizing everything yet.
Tuesday, April 9, 2013
GR Graphics GL - A tesselated terrain
Ok, I admit, back then the first time I read about tessellation a few years ago, when I was still using OpenGl immediate mode and thought it was difficult, I was quite intimidated and thought it was some fancy black - magic thing that is impossible to grasp, let alone do.
Well, it turned out a lot less intimidating than I thought at first.
Well, it turned out a lot less intimidating than I thought at first.
Monday, April 8, 2013
The road so far : Wows and Shadow Mapping
Creating a Graphics library is really a fun and creative project. The "oh-snap" moments, or "Wows" when you get to the next level of realism feature are just beautiful.
Or it might just be me, in which case, just substitute the "You" by "I" and the present tense with the past tense.
Or it might just be me, in which case, just substitute the "You" by "I" and the present tense with the past tense.
Sunday, April 7, 2013
GR Graphics GL - Getting closer to the present with Normal maps
Features added, features enhanced, interfaces polished and others, it was a time to leave 1995 and simple texturing, and start with a few interesting features had to be implemented.
I downloaded a couple of free normalmaps, and implemented the NormalMap plugins and shaders half expecting it to be as dissapointingly easy as the texture ones.
I was in for a surprise.
I downloaded a couple of free normalmaps, and implemented the NormalMap plugins and shaders half expecting it to be as dissapointingly easy as the texture ones.
I was in for a surprise.
Saturday, April 6, 2013
Gr Graphics GL - Textures and Spotlights, plus the explanation of templated configurations
The next shader was for classic, old fashioned, simple texturing.
Friday, April 5, 2013
GR Graphics GL - The first shaders
In its initial creation, the GrGraphicsGl used client memory to store per-vertex attributes and uniform buffers for the per-object attributes.
Using just the positions and the normals plugins, the first toy example (PerVertexLighting_vs.glsl + PerVertexLighting_ps.glsl) were created.
Thursday, April 4, 2013
GR Graphics gets graphics
This post describes the first steps and the main Shader class for the GR Graphics library, OpenGL binding.
Wednesday, April 3, 2013
GR Graphics begins, and loading objects
Gr Graphics began with re-shaping and re-adapting what I learned from GR-Collider to create a graphics-suitable Mesh.
I intend to merge the two classes again in the future, but rapid prototyping meant that this will have to be delegated to the future.
I intend to merge the two classes again in the future, but rapid prototyping meant that this will have to be delegated to the future.
Tuesday, April 2, 2013
GR Graphics
A page for GR Graphics, my framework - agnostic, shader-flexible OpenGL/DirectX11 graphics engine/ graphics prototyping framework.
I will be spending quite some time updating it with screenshots, code samples and probably videos.
Read more about GR Graphics
I will be spending quite some time updating it with screenshots, code samples and probably videos.
Read more about GR Graphics
Monday, April 1, 2013
GR Collider added
A page for my next, more advanced Physics Engine was added, GR-Collider. This was a completely independent creation, in the interest of creating a portfolio. I really like its demo, If you are interested in physics simulations, I would suggest to follow the link to download and run the demo.
This project was around 2 months worth of my free time. It was worth it.
Read more about GR-Collider.
Subscribe to:
Posts (Atom)