How to Use Poly Haven CC0 Assets in Unity

Poly Haven provides free CC0 HDRIs, PBR textures, and 3D models that you can import into Unity without attribution or licensing fees. The workflow differs by asset type: HDRIs become skyboxes or reflection sources, textures need correct channel-to-shader mapping and color space settings, and models require scale and material reassignment after import. This guide covers each path from download to a working scene.

Before You Start

  • Unity version: Any recent LTS release works. The built-in render pipeline and URP both support the steps below; HDRP uses different sky and lit shaders, so adjust shader names accordingly.
  • Asset formats on Poly Haven: HDRIs download as .hdr or .exr; textures as .png/.jpg (sometimes .exr for displacement); models as .fbx, .gltf/.glb, or .blend.
  • Resolution choice: Poly Haven offers multiple resolutions per asset. For real-time use, 1K–2K textures and 2K–4K HDRIs are usually enough. Reserve 8K for hero assets or offline rendering.
  • License: All assets are CC0, so commercial use is permitted with no attribution required. This applies to the assets themselves; your project's own licensing is separate.

Importing HDRIs as Skyboxes and Reflections

HDRIs are the fastest way to get believable ambient lighting in Unity.

Set an HDRI as the Skybox

  1. Download the HDRI in .hdr format at your target resolution.
  2. Drag the file into your Assets folder. Unity imports it as a Texture with a cubemap-like inspector.
  3. In the Texture Import Settings, set Texture Shape to Cube. This is the key step — a 2D texture will not work as a skybox.
  4. Create a new Material (Assets > Create > Material). Set its shader to Skybox/Cubemap.
  5. Assign the imported cubemap to the Cubemap (HDR) slot.
  6. Open Window > Rendering > Lighting, go to the Environment tab, and assign your material to the Skybox Material slot.

Expected result: The scene background shows the HDRI, and ambient light is derived from it.

Use the HDRI for Reflections

  1. Create an empty GameObject and add a Reflection Probe component.
  2. Set Type to Baked (for static scenes) or Realtime (for dynamic objects).
  3. For baked probes, set the Cubemap source or let Unity bake from the skybox. For realtime, set Resolution (128–256 is typical) and Intensity Multiplier.
  4. Place the probe so it covers the reflective area, then bake via the Lighting window.

Common pitfall: If reflections look washed out, check that the HDRI texture's sRGB (Color Texture) option is enabled in import settings. HDRIs are color data and must be treated as sRGB.

Applying PBR Textures to Materials

Poly Haven textures ship as separate maps. You must route each one to the correct shader channel.

Map the Texture Channels

Poly Haven map Unity shader slot (Standard / URP Lit) sRGB setting
Diffuse / Albedo Albedo / Base Map On
Roughness Smoothness (inverted) or Metallic/Smoothness map Off
Metallic Metallic Off
Normal (OpenGL) Normal Map Off
Ambient Occlusion Occlusion Off
Displacement / Height Height (if using tessellation) Off

Critical detail: Unity's Standard shader expects Smoothness, but Poly Haven provides Roughness. Smoothness = 1 − Roughness. Either invert the map in an image editor, or use a shader that accepts roughness directly (URP's Lit shader has a "Roughness" workflow option in some versions — check your pipeline).

Step-by-Step

  1. Download the texture set at your chosen resolution.
  2. Import all maps into Unity.
  3. Select each non-color map (normal, roughness, metallic, AO) and uncheck sRGB (Color Texture) in the import settings. Leaving sRGB on for these maps causes incorrect lighting.
  4. Create a Material and assign the shader (Standard or Universal Render Pipeline/Lit).
  5. Assign Albedo to the base color slot.
  6. Assign the Normal map. If Unity prompts "This texture is not marked as a normal map," click Fix Now.
  7. For roughness: either invert it externally and plug into Smoothness, or pack it into the Metallic/Smoothness map's alpha channel per Unity's convention.

Verification: Apply the material to a sphere under a directional light. The surface should respond to light direction with correct specular highlights. If it looks flat or overly shiny, the roughness/smoothness mapping is wrong.

Importing 3D Models

Poly Haven models come in .fbx, .gltf/.glb, and .blend. Unity natively imports .fbx; .gltf/.glb requires a package like glTFast or UnityGLTF.

FBX Workflow

  1. Download the model as .fbx.
  2. Drag into Assets. Select the model and check the Model tab:
    • Scale Factor: Poly Haven models are typically authored at real-world scale (meters). Unity's default is 1 unit = 1 meter, so scale factor 1 usually works. If the model appears tiny or huge, adjust here.
    • Import Materials: If the FBX embeds materials, Unity may create them automatically. Otherwise, create materials manually using the texture workflow above.
  3. In the Materials tab, you can remap embedded materials to your own.
  4. Drag the model prefab into the scene.

glTF/glb Workflow

  1. Install the glTFast package via Package Manager (Unity Registry).
  2. Import the .glb file. glTFast creates a prefab with materials already wired to the embedded textures.
  3. Check that textures imported correctly — glTF uses a metallic-roughness workflow that maps closely to Unity's, but verify the smoothness inversion.

Common pitfall: Models may import with a pink/magenta material if the shader is missing (e.g., a URP project importing a Built-in shader). Right-click the material and reassign to your pipeline's Lit shader.

Common Pitfalls Checklist

  • Wrong color space on data maps: Normal, roughness, metallic, and AO maps must have sRGB off. Only albedo/diffuse should be sRGB on.
  • Roughness vs. Smoothness: Unity wants smoothness; Poly Haven gives roughness. Invert or use a roughness-compatible shader.
  • HDRI not set to Cube shape: A flat 2D import won't work as a skybox.
  • Missing normal map flag: Unity needs the texture marked as a Normal Map type, or the shader won't decode it correctly.
  • Scale mismatch: Verify model scale against a Unity primitive (e.g., a 1×1×1 cube) before placing it in a scene.
  • Pipeline mismatch: Materials from Built-in shaders appear magenta in URP/HDRP. Reassign shaders after switching pipelines.

Quick Reference: Asset Type to Setup Path

Asset type Download format Key import step Primary use
HDRI .hdr Set Texture Shape to Cube Skybox, ambient light, reflections
PBR texture .png/.jpg sRGB off for data maps; invert roughness Material surfaces
3D model .fbx or .glb Check scale; reassign materials Scene props, hero objects

With these steps, any Poly Haven asset can go from download to a lit, textured object in a Unity scene in a few minutes. The main things to get right are color space on data maps, the roughness-to-smoothness conversion, and pipeline-appropriate shaders.

ecumenism.net
Ecumenism in Canada / Œcuménisme au Canada
learn.unity.com
Free tutorials, courses, and guided pathways for mastering real-time 3D development skills to make video games, VR, AR, and more.
polyhaven.com
The Public 3D Asset Library