Warning: Undefined array key "translationlc" in /usr/www/users/fabook/_diggets/doc/v2/lib/plugins/translation/action.php on line 237
Warning: Cannot modify header information - headers already sent by (output started at /usr/www/users/fabook/_diggets/doc/v2/lib/plugins/translation/action.php:237) in /usr/www/users/fabook/_diggets/doc/v2/inc/Action/Export.php on line 104
Warning: Cannot modify header information - headers already sent by (output started at /usr/www/users/fabook/_diggets/doc/v2/lib/plugins/translation/action.php:237) in /usr/www/users/fabook/_diggets/doc/v2/inc/Action/Export.php on line 104
Warning: Cannot modify header information - headers already sent by (output started at /usr/www/users/fabook/_diggets/doc/v2/lib/plugins/translation/action.php:237) in /usr/www/users/fabook/_diggets/doc/v2/inc/Action/Export.php on line 104
====== NormalMap Material (TGorillaNormalMapMaterialSource) ======
The **TGorillaNormalMapMaterialSource** is inherited from TGorillaDefaultMaterialSource, supports multiple light sources and enables normal mapping functionality in vertex- and fragmentshader: **GORILLA_GLSL_DEFINE_NORMALMAP**
{{:0.8.4:mat_normalmap.jpg?nolink|}}
===== Definition =====
In 3D computer graphics, normal mapping (or Dot3 bump mapping) is a technique used for faking the lighting of bumps and dents – an implementation of bump mapping. It is used to add details without using more polygons. A common use of this technique is to greatly enhance the appearance and details of a low polygon model by generating a normal map from a high polygon model or height map.
Normal maps are commonly stored as regular RGB images where the RGB components correspond to the X, Y, and Z coordinates, respectively, of the surface normal.
[source: https://en.wikipedia.org/wiki/Normal_mapping]
===== In General =====
The shading model configured by default is the Blinn-Phong algorithm.
Using this material source will provide a new published property called **NormalMap**.
It also supplies the optional **DisplacementMap** property to apply a vertex manipulation texture.
===== Normal Maps =====
Using normal maps is quite easy. You can find example textures everywhere and many graphic tools like Photoshop or GIMP are able to build them.
They have a blueish-greenish look, like this example:
{{:0.8.4:brick-n.jpg?nolink|400}}
__WARNING:__ Because Gorilla3D is using OpenGL you have to be careful with the source. NormalMaps are different between OpenGL and DirectX.
In a naive way they are flipped. But the result can be very different.
__NOTICE:__ We do only support normal maps for OpenGL. In case you have a DirectX normal map in your texture set, you need to convert it yourself.
For conversion have a closer look at this article: [[https://help.ambientcg.com/02-Using%20the%20assets/Normal_map_styles.html#:~:text=Editing%20the%20map%20itself,color%20channel%20and%20invert%20it.]]
===== Example =====
uses
Gorilla.Material.NormalMap;
var FNormalMapMaterial : TGorillaNormalMapMaterialSource;
FNormalMapMaterial := TGorillaNormalMapMaterialSource.Create(GorillaViewport1);
FNormalMapMaterial.Parent := GorillaViewport1;
FNormalMapMaterial.Texture.LoadFromFile('layingrock-c.jpg');
FNormalMapMaterial.NormalMap.LoadFromFile('layingrock-n.jpg');
FNormalMapMaterial.NormalIntensity := 1.0;