Jump to content
Sign in to follow this  
DeclaredEvol

Phong Shading + Parallax Occlusion [ArmA 2 Graphics]

Recommended Posts

While I have been working on a modified version of enbseries, I had come across something that probably has not been seen on ArmA 2 before... well at least not by clients. I represent to you, phong shading... Phong shading demonstrates the incredible amounts of shading through a basic color chart, such as red... green... blue. It is basically contrasted with other interpolating methods such as Gouraud shading or flat shading.

::The Phong Formula for 3D Shading::

6e286a8cedc681210e7ce41dca564f1b.png

These are the extreme complexities of what goes on behind your vision of educated pixels and renderings, it is almost like heat vision in a way. Every millisecond, thousands or more of these little calculations I have stated above are in process to determine ray traced light waves moving across the game. And the when the light wave and the object collide, it creates an immerse sharpness to the pixels with Gamma and Saturation curves. To speak English here, it basically shows brightness on objects reflected from lights. Such as this photo below...

500px-Phong-shading-sample.jpg

::ArmA 2 Phong Shading::

http://img217.imageshack.us/f/craaa.png

For people to grasp the concept on how to modify the graphics engine, this is a VERY important tool to rely on. Hopefully some time in the future, ArmA 2 can support DirectX10 and DirectX11. Some of the MAJOR differences between DirectX9 Tessellation that ArmA 2 uses is... Parallax Occlusion. Parallax Occlusion is simply simulating the same tessellation as DirectX10-11 but in a flat plane. Tessellation varies in poly counts which takes up bytes of memory at a time, and most usually can cause performance drops. This is why DirectX9 cannot handle the Real Time tessellation that DirectX10-11 can. It is an older library, therefor harder to display the impressive work that the others can.

As you can see in this video here, Parallax Occlusion... the walls are putting you under the illusion that there is depth and tessellation.

"Which is NOT real tessellation, and is used in ArmA 2... DirectX9 only supports this."

And if you see in DirectX10-11, you will see the real time tessellation multiply tremendously.

NOW! for those who don't know even a bit of what I am talking about... DirectX is the library of functions on your computer that calculate your video games every single inch of detail. From skeleton, to the movement and physics of objects. DirectX without Tessellation is like making stones just a picture on the ground, but no actual texture or bumpiness. With Tessellation, you get precisely a great deal of bumps and ridges. OpenGL is another library, but it had been abused and forgotten by Microsoft. It is basically backstage history with Unreal Gold and Quake. No offense to linux users xD

Anyways, the entire point I am making here is that if we can get enough people together to port DirectX10-11 to ArmA 2. Then we might have something going here, and possibly the company Bohemia Interactive themselves can profit from it. I have some extra information I might release in a bit more time, I have a tutorial on the source script of DirectX10-11 programming... and the major steps of completion.

Edited by DeclaredEvol
Image > 100 kb

Share this post


Link to post
Share on other sites

Well this seems interesting, but lets give BIS the Time to Fix the Graphic issues they have NOQ before going on to something more complex

BTW your Pic is waaaaay to big for the Forum

Share this post


Link to post
Share on other sites

So how did Microsoft abuse and forget about OpenGL? It isn't their standard and never was. And it appears to be doing quite well actually.

And what makes you think BI is going to go to the immense trouble of ripping out the current gfx engine and replacing it with DirectX 10/11 version?

Thats going to be Arma 3. :j:

Share this post


Link to post
Share on other sites
And what makes you think BI is going to go to the immense trouble of ripping out the current gfx engine and replacing it with DirectX 10/11 version?

He said this....

Anyways, the entire point I am making here is that if we can get enough people together to port DirectX10-11 to ArmA 2. Then we might have something going here, and possibly the company Bohemia Interactive themselves can profit from it.

Share this post


Link to post
Share on other sites

Tesselation looks good, but it is pure eye-candy. For the purposes of ArmA2's lifetime, I'd prefer flat geometry and more performance, I wish the parallax was disableable as it's more of a distraction than an effect (for me) :) Personally, I think the greatest improvement ArmA2/3 could have is from employing deferred lighting/rendering. Deferred lighting removes the hardware lights limit, allowing for hundreds or thousands of light sources with little cumulative impact, something I think would vastly improve ArmA's game world enormously.

Phong shading - now, that's technology that's about 20 years old, I haven't even heard the phrase in about ten years, are you sure it hasn't been superceded or incorporated already as a standard graphics library funtionality?

Share this post


Link to post
Share on other sites
...

Hey there,

This is in theory a really nice idea. I am not certain about its possible implementation though.

1. Tesselating the models in A2 would need some fixes on the models in the first place to make it work (i know how tesselation works, i am not sure if DX11 - btw, DX10 doesn't support Real Time tesselation - needs the same pre-requirements for it.) I am also uncertain at this point if DX11 still needs LODs or if it creates those on the the fly using the tesselation technic.

2. OpenGL is not a standard for microsoft, but that doesn't mean it is not working coreclty, or GFX wise impressive in it's own way. OSX and Linux based systems works great on openGL. Games ported on openGL are also working just fine (although this is not the subject of this topic, i thought it was worth mentioning).

3.Phong Shanding is nothing new. It has been around for decades. It is standard for DX9 games for at least 5-6 years if not more.

Share this post


Link to post
Share on other sites

ARMA 2 has Parallax Occulusion to make the ammo's looks so smooth in it's curvature. Cool, by changing the Direct3D API in the engine also is a large scale improvement/modification to the engine.

Share this post


Link to post
Share on other sites
So how did Microsoft abuse and forget about OpenGL? It isn't their standard and never was. And it appears to be doing quite well actually.

And what makes you think BI is going to go to the immense trouble of ripping out the current gfx engine and replacing it with DirectX 10/11 version?

Thats going to be Arma 3. :j:

You really think it is that difficult??? I mean, it is difficult. But I hang out with friends that play an old game that didn't even support Directx 9 and they ported Directx9-11 on the game. The game is literally 10 years of age, and there is absolutely no source reference to how to program in that game. Only a SDK [software Development Kit] and a few other tools.

---------- Post added at 03:45 PM ---------- Previous post was at 03:40 PM ----------

Hey there,

This is in theory a really nice idea. I am not certain about its possible implementation though.

1. Tesselating the models in A2 would need some fixes on the models in the first place to make it work (i know how tesselation works, i am not sure if DX11 - btw, DX10 doesn't support Real Time tesselation - needs the same pre-requirements for it.) I am also uncertain at this point if DX11 still needs LODs or if it creates those on the the fly using the tesselation technic.

2. OpenGL is not a standard for microsoft, but that doesn't mean it is not working coreclty, or GFX wise impressive in it's own way. OSX and Linux based systems works great on openGL. Games ported on openGL are also working just fine (although this is not the subject of this topic, i thought it was worth mentioning).

3.Phong Shanding is nothing new. It has been around for decades. It is standard for DX9 games for at least 5-6 years if not more.

yes well said, and I know about open gl... however Microsoft basically signed a contract or pretty much made a promise with linux that they would include Open GL drivers for games, and it was only for a year or two. OpenGL is pretty much history in the making of games, and the last game I believe that used it was Prey 2 if there is one. Some games imported the API but I extremely doubt there are many... anyways, I agree... no one is going to go through the extreme trouble of rewriting the entire engine. However, in the long run... it would be quite interesting to know if it is possible!

---------- Post added at 03:47 PM ---------- Previous post was at 03:45 PM ----------

ARMA 2 has Parallax Occulusion to make the ammo's looks so smooth in it's curvature. Cool, by changing the Direct3D API in the engine also is a large scale improvement/modification to the engine.

yeah, Parallax Occlusion is in pretty much everything that uses Shader Model 3.0 in ArmA 2. And some more as well, but look at it in this perspective. It doesn't have to process multiplied polygons that cream the video memory and burn the CPU.

---------- Post added at 03:50 PM ---------- Previous post was at 03:47 PM ----------

Tesselation looks good, but it is pure eye-candy. For the purposes of ArmA2's lifetime, I'd prefer flat geometry and more performance, I wish the parallax was disableable as it's more of a distraction than an effect (for me) :) Personally, I think the greatest improvement ArmA2/3 could have is from employing deferred lighting/rendering. Deferred lighting removes the hardware lights limit, allowing for hundreds or thousands of light sources with little cumulative impact, something I think would vastly improve ArmA's game world enormously.

Phong shading - now, that's technology that's about 20 years old, I haven't even heard the phrase in about ten years, are you sure it hasn't been superceded or incorporated already as a standard graphics library funtionality?

Yes! ArmA 2 has been very dim with light, all of the sun rays look like it is coming through a yellow aura. From ArmA to ArmA 2, the first ArmA actually had some nice lighting... a little less in the ray tracing but still... it was visually almost just as good as ArmA 2.

Edited by DeclaredEvol

Share this post


Link to post
Share on other sites

This reminds me of Kegetys's DXDLL program for OFP that would enable bloom, water reflections, etc.

Share this post


Link to post
Share on other sites

That certainly looks like an excellent project which could revolutionise the engine. This has great potential and I hope some BIS staff see this thread.

Share this post


Link to post
Share on other sites
Tesselation looks good, but it is pure eye-candy. For the purposes of ArmA2's lifetime, I'd prefer flat geometry and more performance, I wish the parallax was disableable as it's more of a distraction than an effect (for me) :) Personally, I think the greatest improvement ArmA2/3 could have is from employing deferred lighting/rendering. Deferred lighting removes the hardware lights limit, allowing for hundreds or thousands of light sources with little cumulative impact, something I think would vastly improve ArmA's game world enormously.

Phong shading - now, that's technology that's about 20 years old, I haven't even heard the phrase in about ten years, are you sure it hasn't been superceded or incorporated already as a standard graphics library funtionality?

Tessellation isn't just eyecandy. At this moment, triangle tessellation is the best way to scale performance.

Specifically for realtime level-of-detail alterations tessellation is a perfect fit. It can dynamically, based on system load or desired LOD, alter LODs on-the-fly without crippling ROPs and TMUs.

Currently parallax occlusion offers you two possibilities: On or Off. Tessellation however is perfectly and infinitely scalable solving a lot of compatibility issues.

As it is strictly polygonal-based instead of vertex-based it is compatible with all other lighting, shadowing, anti-aliasing and anisotropic filtering algorithms.

There is only one problem: Standardized hardware-accelerated triangle tessellation is only possible on DirectX 11 or OpenGL 4.0 compliant hardware.

Phong shading is used in various render engines like Valve Software's Source engine.

Edited by SgtH3nry3

Share this post


Link to post
Share on other sites
Tessellation isn't just eyecandy. At this moment, triangle tessellation is the best way to scale performance.

Specifically for realtime level-of-detail alterations tessellation is a perfect fit. It can dynamically, based on system load or desired LOD, alter LODs on-the-fly without crippling ROPs and TMUs.

Currently parallax occlusion offers you two possibilities: On or Off. Tessellation however is perfectly and infinitely scalable solving a lot of compatibility issues.

As it is strictly polygonal-based instead of vertex-based it is compatible with all other lighting, shadowing, anti-aliasing and anisotropic filtering algorithms.

There is only one problem: Standardized hardware-accelerated triangle tessellation is only possible on DirectX 11 or OpenGL 4.0 compliant hardware.

Phong shading is used in various render engines like Valve Software's Source engine.

Yes, I take the point about it not being pure eye-candy :) however, it is a fix too far for ArmA2. Specifically, I don't know how tesselation works on a complex object such as a tree, and especially trees in the numbers that ArmA2 has. Tesselation represents an exciting step in gaming terms, but I doubt we'll see it a

in a BIS production for a long while yet.

However, I'm always eager to be proved wrong ;)

Share this post


Link to post
Share on other sites
Yes, I take the point about it not being pure eye-candy :) however, it is a fix too far for ArmA2. Specifically, I don't know how tesselation works on a complex object such as a tree, and especially trees in the numbers that ArmA2 has. Tesselation represents an exciting step in gaming terms, but I doubt we'll see it a

in a BIS production for a long while yet.

However, I'm always eager to be proved wrong ;)

Tessellation should work the same as using static meshes for trees.

I know that the Russian based Unigine Corps. has succesfully implemented tessellation in their Unigine engine software a year ago. At the time they demonstrated their engine we were told that tessellation was used for terrain and fluid dynamics (like in DIRT 2) at that stage.

As for the compatibility issues. If an ArmA 3 is to be released in 2012, tessellation hardware has been available since 2009.

One should expect future ArmA titles to run on somewhat modern (at least DirectX 10/11) hardware. Another big advantage is that it leaves a lot of processing power for more important things like particle rendering, physics and actual graphics.

Software studios often run about 3-4 years behind the hardware specification. This is because they need to be educated on new technologies and how to properly implement them. Obviously compatibility is also a key point, but this is within the de facto 3-year margin.

Funny detail is that triangle tessellation made professional flight simulators possible in the late nineties. It was used to project meshing tiles in the distance to create a detailed terrain instead of a plane with simple polygonal abnormalities. It has been around for long time, but strangely the inefficient and "fake" occlusion shader has been used the last couple of years.

Edited by SgtH3nry3

Share this post


Link to post
Share on other sites

All this rendering tech is great, but if you don't have the capacity to exploit it then what does it matter?

What I mean to say is that the settings and maps of ArmA games are HUGE. Unless there is also a comparable increase in things like fractal generation of micro terrain features to automatically provide the detail that these rendering techniques and hardware can exploit then its really a moot point.

Hopefully we see advances along the same lines that the folks at Outerra are making with their fractal terrain detail generation, as that looks to be the best there is at the moment.

Share this post


Link to post
Share on other sites

well, i know Bohemia Interactive knows about this stuff... considering they already made it with parallax occlusion. But as for the modders and scripters, I suppose this would be a bit important to know if there were to be importing of DX10-11.

Share this post


Link to post
Share on other sites
You really think it is that difficult??? I mean, it is difficult. But I hang out with friends that play an old game that didn't even support Directx 9 and they ported Directx9-11 on the game. The game is literally 10 years of age, and there is absolutely no source reference to how to program in that game. Only a SDK [software Development Kit] and a few other tools.

Just out of curiosity, what game did they port to Dx11?

Share this post


Link to post
Share on other sites
Just out of curiosity, what game did they port to Dx11?

Unreal Gold, it is before Unreal Tournament... it is pretty old. I still play it, and at the time the game was so old that it only supported Glide FX for Voodoo cards... and Software Rendering lol!

Share this post


Link to post
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now
Sign in to follow this  

×