# Unity_SphericalHarmonics_Tools **Repository Path**: eloncode/Unity_SphericalHarmonics_Tools ## Basic Information - **Project Name**: Unity_SphericalHarmonics_Tools - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-04-08 - **Last Updated**: 2026-04-08 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Unity Spherical Harmonics Tools

## Overview In this project the are two tools: the first one takes an input cubemap and project into the spherical harmonic basis and print the first three bands (**9 coefficients**). It's possible to compute this projection with 3 different techniques: - On the **CPU** with **uniform sampling**, which means reading all the texels of the cubemap. - On the **CPU** with **Monte Carlo sampling**, which means less texture readings, more rapid but with an approximated result. - On the **GPU** with **Monte Carlo sampling**, with a result similar to the CPU one but faster. - On the **GPU** with **uniform sampling**, using a *Compute Shader*, this gives the accuracy of CPU uniform sampling with maximum speed. **I Recommend using this.** Once the result is computed you can see it and toggle the original version and the projected one.

The second tool is a component to add on a game object; its purpose is to get all the game object's children and foreach of their vertices compute and project onto the SH basis the **Geometry Factor**. It won't change directly the objects meshes but will create a clone object to modify. The **Geometry Factor** describes the visibility from the vertex (so 0 if the vertex is occluded or 1 if the vertex can see direclty the environment from direction **v**) multiplied with che **cosine** of the **vertex normal** with the direction **v**. > At the momenty Unity doesn't support custom vertex attributes so i had to put the 9 coefficients in the existing ones, organizing them in this way: first 4 coefficients in the vertex color rgba, the next 2 in the uv2, the next 2 in the uv3 and the last one in the x component of uv4. It's a temporary solution and i hope to find a better workaround.