# Viewer

> Describes viewer functionality within the Asset Transformer SDK for 3D asset visualization and interaction.

The View module API can be used to render scenes, generating offline screenshots (see following snippet), or create interactive viewers (see Python UI).

```python title="Python"
direction = geom.Point3(0, 0, -1) # front
viewer = view.createViewer(resolution, resolution)
gpu_scene = view.createGPUScene(occurrence, show_edges)
view.addGPUScene(gpu_scene, viewer)
view.fitCamera(direction, type, fov, viewer, [occurrence])
if show_edges:
    view.setViewerProperty("ShowEdges", "True", viewer)
if show_lines:
    view.setViewerProperty("ShowLines", "False", viewer)
view.takeScreenshot(path, viewer)
view.destroyViewer(viewer)
view.destroyGPUScene(gpu_scene)
```

```csharp title="C#"
uint viewer = pxz.View.CreateViewer(resolution, resolution);
uint gpuScene = pxz.View.CreateGPUScene(occurrence, showEdges);
pxz.View.AddGPUScene(gpuScene, viewer);
pxz.View.FitCamera(direction, type, fov, viewer, new OccurrenceList(new uint[] { occurrence }));
pxz.View.SetViewerProperty("ShowEdges", showEdges ? "True" : "False", viewer);
pxz.View.SetViewerProperty("ShowLines", showLines ? "True" : "False", viewer);
pxz.View.TakeScreenshot(path, viewer);
pxz.View.DestroyViewer(viewer);
pxz.View.DestroyGPUScene(gpuScene);
```

***

## Viewer textures

When building a custom UI, textures generated by the SDK viewer can be retreived using [view.getGLTextureHandle](/asset-transformer-sdk/2026.4/api/python/view_functions.md#getgltexturehandle).
These textures are packed and might contain other elements than what the name only suggests. See table below for a detailed explanation:

| Texture name            | Vulkan format        | OpenGL format | Content                                                                                                                                                                                                                                                                                                                                             |
| ----------------------- | -------------------- | ------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Composited              | R8G8B8A8\_UNORM      | RGBA8UI       | 4 8-bits unsigned int containing the color of the composited image                                                                                                                                                                                                                                                                                  |
| AlbedoOpactity          | R8G8B8A8\_UNORM      | RGBA8UI       | 4 8-bits unsigned int containing the albedo (RGB) and the opacity (A)                                                                                                                                                                                                                                                                               |
| Normal                  | R32G32B32A32\_SFLOAT | RGBA32F       | 4 32-bits float. The first 3 floats represent the normal. The last float (A) is the z coordinate or the tangent. Normals and tangents are represented between 0 and 1. They are obtained by computing `normal * 0.5 + 0.5 = storedNormal`                                                                                                           |
| Depth                   | D32\_SFLOAT          | R32F          | Single 32-bits float representing the depth (not linearized)                                                                                                                                                                                                                                                                                        |
| MetallicRoughnessAOMisc | R8G8B8A8\_UNORM      | RGBA8UI       | 4 8-bits unsigned int containing the metallic value (R), the roughness (G), the ambient occlusion (B), and a last value (A) that is either 2.0 when the primitive is selected or 0.0 when it is not                                                                                                                                                 |
| Emissive                | R8G8B8A8\_UNORM      | RGBA8UI       | 4 8-bits unsigned int. The first 3 represent the color of the emissive value. The last one (A) is currently unused                                                                                                                                                                                                                                  |
| ObjectIdPrimitiveId     | R32G32B32A32\_UINT   | RGBA32UI      | 4 8-bits unsigned int. The first unsigned is composed of the sceneID (first 2 bits) and the occurrenceID (6 last bits). The second one contains the primitiveID. The last 2 unsigned are coordinates x and y of tangents, put as int using `floatBitsToUint`. They are obtained by computing `floatBitsToUint(tangent * 0.5 + 0.5) = storedTangent` |
| UVs                     | R32G32B32A32\_SFLOAT | RGBA32F       | 4 32-bits floats. The first 2 represent UV0, the last two represent UV1                                                                                                                                                                                                                                                                             |
| SSAO                    | R8\_UNORM            | R8UI          | Single 8-bits unsigned int representing the Screen Space Ambient Occlusion computed value (when SSAO or SSGI are activated)                                                                                                                                                                                                                         |
| IndirectLighting        | R8G8B8A8\_UNORM      | RGBA8UI       | 4 8-bits unsigned int representing the computed indirect lighting (when SSGI is activated)                                                                                                                                                                                                                                                          |

## Viewer properties

Viewer properties can be get/set using [view.getViewerProperty](/asset-transformer-sdk/2026.4/api/python/view_functions.md#getviewerproperty) and [view.setViewerProperty](/asset-transformer-sdk/2026.4/api/python/view_functions.md#setviewerproperty).

| Property                       | Type                                                                                    | Description                                               |
| ------------------------------ | --------------------------------------------------------------------------------------- | --------------------------------------------------------- |
| OcclusionCullingEnabled        | [Boolean](/asset-transformer-sdk/2026.4/api/python/core_types.md#boolean)               |                                                           |
| DepthReprojectionEnabled       | [Boolean](/asset-transformer-sdk/2026.4/api/python/core_types.md#boolean)               |                                                           |
| ReprojectionResolutionDivision | [Int](/asset-transformer-sdk/2026.4/api/python/core_types.md#int)                       |                                                           |
| SelectionOverlayEnabled        | [Boolean](/asset-transformer-sdk/2026.4/api/python/core_types.md#boolean)               |                                                           |
| ShowPolygons                   | [Boolean](/asset-transformer-sdk/2026.4/api/python/core_types.md#boolean)               |                                                           |
| ShowEdges                      | [Boolean](/asset-transformer-sdk/2026.4/api/python/core_types.md#boolean)               |                                                           |
| ShowPatches                    | [Boolean](/asset-transformer-sdk/2026.4/api/python/core_types.md#boolean)               |                                                           |
| ShowBReps                      | [Boolean](/asset-transformer-sdk/2026.4/api/python/core_types.md#boolean)               |                                                           |
| ShowLines                      | [Boolean](/asset-transformer-sdk/2026.4/api/python/core_types.md#boolean)               |                                                           |
| ShowPoints                     | [Boolean](/asset-transformer-sdk/2026.4/api/python/core_types.md#boolean)               |                                                           |
| UseVertexColor                 | [Boolean](/asset-transformer-sdk/2026.4/api/python/core_types.md#boolean)               |                                                           |
| UseNormalMaps                  | [Boolean](/asset-transformer-sdk/2026.4/api/python/core_types.md#boolean)               |                                                           |
| InvertVisibility               | [Boolean](/asset-transformer-sdk/2026.4/api/python/core_types.md#boolean)               |                                                           |
| UpdateHLODs                    | [Boolean](/asset-transformer-sdk/2026.4/api/python/core_types.md#boolean)               |                                                           |
| HLODErrorPixelCount            | [Int](/asset-transformer-sdk/2026.4/api/python/core_types.md#int)                       |                                                           |
| BackFaceCulling                | Enum: 0, 1, 2                                                                           |                                                           |
| LineWidth                      | [Real](/asset-transformer-sdk/2026.4/api/python/core_types.md#real)                     |                                                           |
| WireframeWidth                 | [Real](/asset-transformer-sdk/2026.4/api/python/core_types.md#real)                     |                                                           |
| PointSize                      | [Real](/asset-transformer-sdk/2026.4/api/python/core_types.md#real)                     |                                                           |
| WireframeColor                 | [Color](/asset-transformer-sdk/2026.4/api/python/core_types.md#color)                   |                                                           |
| NonManifoldColor               | [Color](/asset-transformer-sdk/2026.4/api/python/core_types.md#color)                   |                                                           |
| EdgeBorderColor                | [Color](/asset-transformer-sdk/2026.4/api/python/core_types.md#color)                   |                                                           |
| PointColor                     | [Color](/asset-transformer-sdk/2026.4/api/python/core_types.md#color)                   |                                                           |
| LineColor                      | [Color](/asset-transformer-sdk/2026.4/api/python/core_types.md#color)                   |                                                           |
| PatchBorderColor               | [Color](/asset-transformer-sdk/2026.4/api/python/core_types.md#color)                   |                                                           |
| UseUVAsPosition                | [Boolean](/asset-transformer-sdk/2026.4/api/python/core_types.md#boolean)               |                                                           |
| UVChannel                      | Enum: 0, 1                                                                              |                                                           |
| RenderComposited               | [Boolean](/asset-transformer-sdk/2026.4/api/python/core_types.md#boolean)               |                                                           |
| RenderAlbedoOpacity            | [Boolean](/asset-transformer-sdk/2026.4/api/python/core_types.md#boolean)               |                                                           |
| RenderMetallicRoughnessAOMeta  | [Boolean](/asset-transformer-sdk/2026.4/api/python/core_types.md#boolean)               |                                                           |
| RenderNormal                   | [Boolean](/asset-transformer-sdk/2026.4/api/python/core_types.md#boolean)               |                                                           |
| RenderEmissive                 | [Boolean](/asset-transformer-sdk/2026.4/api/python/core_types.md#boolean)               |                                                           |
| RenderObjectIdPrimitiveId      | [Boolean](/asset-transformer-sdk/2026.4/api/python/core_types.md#boolean)               |                                                           |
| RenderUVs                      | [Boolean](/asset-transformer-sdk/2026.4/api/python/core_types.md#boolean)               |                                                           |
| RenderSSAO                     | [Boolean](/asset-transformer-sdk/2026.4/api/python/core_types.md#boolean)               |                                                           |
| RenderIndirectLighting         | [Boolean](/asset-transformer-sdk/2026.4/api/python/core_types.md#boolean)               |                                                           |
| UseSSAO                        | [Boolean](/asset-transformer-sdk/2026.4/api/python/core_types.md#boolean)               |                                                           |
| SSAOBlur                       | [Boolean](/asset-transformer-sdk/2026.4/api/python/core_types.md#boolean)               |                                                           |
| SSAOBlurSize                   | [Int](/asset-transformer-sdk/2026.4/api/python/core_types.md#int)                       |                                                           |
| SSAORadius                     | [Real](/asset-transformer-sdk/2026.4/api/python/core_types.md#real)                     |                                                           |
| SSAOAmplitude                  | [Real](/asset-transformer-sdk/2026.4/api/python/core_types.md#real)                     |                                                           |
| UseSSGI                        | [Boolean](/asset-transformer-sdk/2026.4/api/python/core_types.md#boolean)               |                                                           |
| SSGIQuality                    | Enum: 0, 1, 2, 3                                                                        |                                                           |
| SSGIThickness                  | [Real](/asset-transformer-sdk/2026.4/api/python/core_types.md#real)                     |                                                           |
| SSGICoeff                      | [Real](/asset-transformer-sdk/2026.4/api/python/core_types.md#real)                     |                                                           |
| SSGIFilteringPasses            | [UInt](/asset-transformer-sdk/2026.4/api/python/core_types.md#uint)                     |                                                           |
| UseFXAA                        | [Boolean](/asset-transformer-sdk/2026.4/api/python/core_types.md#boolean)               |                                                           |
| ExplodeCenter                  | [Point3](/asset-transformer-sdk/2026.4/api/python/geom_types.md#point3)                 |                                                           |
| ExplodeFactor                  | [Point3](/asset-transformer-sdk/2026.4/api/python/geom_types.md#point3)                 |                                                           |
| Environment                    | [FilePath](/asset-transformer-sdk/2026.4/api/python/core_types.md#filepath)             |                                                           |
| CubeMapSize                    | [Int](/asset-transformer-sdk/2026.4/api/python/core_types.md#int)                       |                                                           |
| PrefilterMapSize               | [Int](/asset-transformer-sdk/2026.4/api/python/core_types.md#int)                       |                                                           |
| IrradianceMapSize              | [Int](/asset-transformer-sdk/2026.4/api/python/core_types.md#int)                       |                                                           |
| Exposure                       | [Coeff](/asset-transformer-sdk/2026.4/api/python/core_types.md#coeff)                   |                                                           |
| ShowBackground                 | [Boolean](/asset-transformer-sdk/2026.4/api/python/core_types.md#boolean)               |                                                           |
| BackgroundColor                | [ColorAlpha](/asset-transformer-sdk/2026.4/api/python/core_types.md#coloralpha)         |                                                           |
| CubemapRotation                | [BoundedInteger](/asset-transformer-sdk/2026.4/api/python/core_types.md#boundedinteger) |                                                           |
| BlurMap                        | [BoundedInteger](/asset-transformer-sdk/2026.4/api/python/core_types.md#boundedinteger) |                                                           |
| EnableToneMaping               | [Boolean](/asset-transformer-sdk/2026.4/api/python/core_types.md#boolean)               |                                                           |
| UseEnvironmentMap              | [Boolean](/asset-transformer-sdk/2026.4/api/python/core_types.md#boolean)               |                                                           |
| AmbientColor                   | [Color](/asset-transformer-sdk/2026.4/api/python/core_types.md#color)                   | AmbientColor will be used only if useEnvironmentMap=False |
| UsePose                        | [Boolean](/asset-transformer-sdk/2026.4/api/python/core_types.md#boolean)               |                                                           |
| ShadowsEnabled                 | [Boolean](/asset-transformer-sdk/2026.4/api/python/core_types.md#boolean)               |                                                           |
| ShadowMapResolution            | [Int](/asset-transformer-sdk/2026.4/api/python/core_types.md#int)                       |                                                           |
| ShadowCulling                  | Enum: 0, 1                                                                              |                                                           |
| DepthBias                      | [Real](/asset-transformer-sdk/2026.4/api/python/core_types.md#real)                     |                                                           |
| UsePCF                         | [Boolean](/asset-transformer-sdk/2026.4/api/python/core_types.md#boolean)               |                                                           |
| ComputeLastAABB                | [Boolean](/asset-transformer-sdk/2026.4/api/python/core_types.md#boolean)               |                                                           |
