# Extended PBR Model

This model offers more attributes than the **PBR Model**. It allows for selecting and editing:

* `Environment`
* `Normal Mapping`
* `Albedo Texture`, `Color`, and `Blending`
* `Specular Color`
* and several aspects of `Occlusion Metallic Roughness`.

All these **Attributes** are described in greater detail below.

![](https://2561100106-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Ff6JZovzOqBctA4C1o76u%2Fuploads%2Fgit-blob-796f11e24cad141b64122f44e4f6ed276f6f44ef%2Fextendedpbrmaterialmat1.png?alt=media)

## Attributes

### Material

![Material](https://2561100106-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Ff6JZovzOqBctA4C1o76u%2Fuploads%2Fgit-blob-26d4dacde88cc416a4c240b0634ecdbb33e9c4cb%2Fextendedpbrmat2.png?alt=media)

This **Attribute** provides the `Name` of the **Material** as well as the `Shading model` type. It also sets the `Alpha` value if it is toggled on.

The `Alpha` channel is additional to the RGB channels and adds a kind of transparency to the object by mixing the background and foreground colors. For example, if the `Alpha` value is set to 0.5, then this would result in a 50% mix of the object and its background, providing a somewhat see-through quality.

### Environment Map

![Environment Map](https://2561100106-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Ff6JZovzOqBctA4C1o76u%2Fuploads%2Fgit-blob-2fa29745799cab8b7d9471cbf4aba0f99fc955d0%2Fpbrenvironmentmap.png?alt=media)

This enables the user to set a **Texture** which reflects the environment around an **Object**, meaning that the **Object** reflects the surface surrounding it (whether that be the background, another **Object**, or both combined.).

Initially, there is only the **Attribute** `Overwrite Env.` which is toggled off by default. If it is toggled on, all of the other **Attributes** are revealed.

`Environment Map` is the desired **Texture** to be used (a *equirectangular* or *cubemap* **Texture** of type *PNG*, *JPG*, *EXR*, or *HDR*).

`Tint` provides the color of the tint. The **Texture’s** RGB channels (not alpha) are then multiplied by the chosen tint.

`Exposure` determines how bright the **Texture** should be with a value from 0 to infinity.

`Rotation` sets the beginning of the image of the provided `Texture` to be "delayed" in the x or direction, moving it from left to right. The resulting "cut off" piece wraps around to the start of the image. Its range is from 0 degrees to 360 degrees.

`Tilt` sets the beginning of the image of the provided `Texture` to be "delayed" in the y or direction, moving it from bottom to top. The resulting "cut off" piece wraps around to the start of the image. Its range is from -90 degrees to 90 degrees.

`Projection Height` is where the ‘point of visualization’ starts. If set to 50%, this would be halfway from the bottom of the image and it would display upwards from there. To see a visual example of this, please refer to the video linked [here](https://www.youtube.com/watch?v=7axPpWTcFrw).

### Normals

![Normals](https://2561100106-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Ff6JZovzOqBctA4C1o76u%2Fuploads%2Fgit-blob-7780c73437adbf0ee52ea477774b24fccbbcb44f%2Fextendedpbrmaterial4.png?alt=media)

A normal is a line perpendicular to the surface of some object. *Normal mapping* distorts these normals and simulates a surface with light and shadow, even if the object surface itself is flat. This is only possible with a light source. The `Normal Map` sets this surface and `Use Normal Map` toggles it on and off.

### Albedo

![Albedo](https://2561100106-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Ff6JZovzOqBctA4C1o76u%2Fuploads%2Fgit-blob-e2d4b469f9134cb25e42941edcce269bbb8efd3a%2Fextendedpbrmaterial5.png?alt=media)

`Color` of `Albedo` sets the base diffuse color of the model.

`Texture` takes any image to add any desired visual information.

Using `Blending`, the `Texture` and `Color` are combined. If `Blending` is set to 1 then 100% of the `Texture` is displayed on the **Object**. If 0.5, then it displays a 50/50 ratio of `Texture` and `Color`.

### Specular

![Specular](https://2561100106-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Ff6JZovzOqBctA4C1o76u%2Fuploads%2Fgit-blob-185a4fe7321a170516d3953681a803c836995f87%2Fextendedpbrmaterial6.png?alt=media)

`Specular` is the point of reflection of the light source. `Color` sets the color of it.

### Occlusion Metallic Roughness

![Occlusion Metallic Roughness](https://2561100106-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Ff6JZovzOqBctA4C1o76u%2Fuploads%2Fgit-blob-1cfa6bb4a5428aad92369407eb173a114edd0409%2Fextpbrocclusionmetrough.png?alt=media)

`Use Occlusion` toggles occlusion on and off.

`Occlusion Map` sets an image for occlusion. *Occlusion* itself delivers shadow properties. Considering the RGB channels, *Occlusion* only uses the red channel (keep this in mind when making `Texture` files). Even without a light source, the `Texture` will show up as a shadow and light on the **Object**, simulating a bright side and dark side. *Occlusion* makes it possible for the user to make a texture for an **Object** that simulates another **Object** throwing a shadow on the first **Object**.

`Use Met. Rough.` toggles metallic roughness on and off.

`Met. Rough. Map` sets an image for metallic roughness to contribute to the overall texture of the metallic material.

`Metallic` determines how much the surface simulates a metal-like quality, appearing shinier and harder or rougher and duller.

`Roughness` determines how rough an **Object** is, limiting or strengthening reflectivity.

### Property Names

It is possible to hover over each **Attribute** and access their property names to be used in code or **Nodes**. A complete list of these names is as follows:

* `Use Alpha`: use\_alpha
* `Alpha`: alpha
* `Overwrite Env.`: env\_overwrite
* `Environment Map`: environment\_map
* `Tint`: env\_tint
* `Exposure`: env\_exposure
* `Rotation`: env\_rotate
* `Tilt`: env\_tilt
* `Projection Height`: env\_projection\_height
* `Use Normal Map`: use\_normal\_map
* `Normal Map`: normal\_map
* `Albedo Map`: albedo\_map
* `Color` (Albedo): albedo\_color
* `Blending`: albedo\_map\_blending
* `Color` (Specular): specular\_color
* `Use Occlusion`: use\_occlusion\_map
* `Occlusion Map`: occlusion\_map
* `Use Met. Rough.`: use\_metallic\_roughness\_map
* `Met. Rough. Map`: metallic\_roughness\_map
* `Metallic`: metallic
* `Rougness`: roughness
