Introduction to Spherical Harmonics for Graphics Programmers
- Auto-discovered
Visit resource ↗Description
Introduction to Spherical Harmonics for Graphics Programmers is a technical blog article.
Long-form tutorial introducing spherical harmonics for realtime graphics programmers, focusing on directional lighting approximations rather than rigorous proofs. Explains function spaces and orthonormal bases, SH definitions, and why a few coefficients can approximate sphere-domain functions such as radiance and irradiance. Assumes basic realtime rendering, linear algebra, and integrals.
It is aimed at intermediate graphics programmers.
The article is a free HTML blog post meant to be read in one sitting, with diagrams or code snippets embedded in the page.
It is useful when you want practical detail beyond a title or store listing and prefer primary-source explanation from the author or maintainer.
Related resources
- Custom Renderer Features (Cyanilux)
Long-form Cyanilux guide to URP ScriptableRendererFeature and ScriptableRenderPass code: example effects, RTHandle setup, blit paths, and Unity 6 Render Graph notes.
100% match · <shaders><blog><explains><free><one><programmers><rather><read> - A gentle introduction to shaders (Alan Zucconi)
Alan Zucconi's A gentle introduction to shaders in Unity3D (June 2015) is part one of his Gentle Introduction series on alanzucconi.com, aimed at Unity developers new to GPU programs. It connects vertices, materials, and shaders in Unity's pipeline, covering ShaderLab Properties and SubShader layout, inspector uniforms, Queue tags, ZTest, and the surface-versus-vertex/fragment split for lighting versus effects. Little prior shader knowledge is assumed; fixed-function shaders are skipped as obsolete.
100% match · <shaders><blog><article><free><introduction><long><programmers><source> - Believable Caustics Reflections (Alan Zucconi)
Believable Caustics Reflections is Alan Zucconi's September 2019 Unity blog post on faking pool-style ripple caustics without ray tracing, sparked by Florian Gelzenleuchter's popular shader GIF. One tileable texture is sampled twice in a Surface shader at different scales and scroll speeds, combined with min(), then tinted onto albedo with slight RGB UV offsets for dispersion. The walkthrough covers _ST tiling, _Time animation, HDR albedo above 1.0, and Post Processing Stack v2 bloom.
100% match · <shaders><intermediate><blog><article><few><free><one><post> - Blur Renderer Feature Example/Template for URP / Unity 2021.2 (Alexander Ameye)
Custom Render Passes in Unity is Alexander Ameye's July 2021 ameye.dev note on URP ScriptableRendererFeature and ScriptableRenderPass boilerplate, heavily commented where Unity SRP documentation still feels sparse. The sample applies a two-pass box blur: blit camera color to a temporary buffer, blur vertically then horizontally, with adjustable strength and downsampling.
100% match · <shaders><intermediate><blog><article><basic><free><function><introduction> - BruteForceGame
Matthieu Houllier's Brute Force studio blog documenting Crumble, a Unity physics platformer released on Steam in late 2020. Devlogs walk through shipped shaders: shell grass ben
100% match · <shaders><intermediate><blog><article><basic><form><free><lighting> - Custom Post Processing in URP / Unity 2021.3 (Febucci)
Federico Bellucci's May 2022 Febucci article covers custom post-processing in Unity URP on Unity 2021.x (URP 12.1.5), when volume-backed custom effects lacked clear docs.
100% match · <shaders><intermediate><blog><article><free><post><programmers><read> - Drawing Thousands of Meshes with DrawMeshInstanced / Indirect (Toqoz)
Toqoz's November 2019 toqoz.fyi post walks through drawing very large mesh counts in Unity with Graphics.DrawMeshInstanced and Graphics.DrawMeshInstancedIndirect, with C# samples,
100% match · <shaders><blog><article><basic><free><lighting><one><post> - Effect Texture Maker
Official docs list sixty-eight templates, resolutions to 2048, animation and sprite sheets, three-way color balance, normal maps, and PNG alpha export.
100% match · <intermediate><aimed><beyond><free><practical><source><technical><want> - A silly diffuse shading model
A silly diffuse shading model is a December 2025 post on the lisyarus graphics blog about a one-liner alternative to classic Lambertian diffuse for tech demos and early…
100% match · <math><shaders><intermediate><blog><article><author><basic><directional> - Getting started with BGFX
[video] Getting started with BGFX is a YouTube playlist by Game Coder Nz that walks through the bgfx cross-platform rendering library from a blank project to basic 3D and UI…
100% match · <shaders><basic><free><intermediate><introduction><practical><programmers><rather> - Realtime Raytracing in Bevy 0.18 (Solari)
Realtime Raytracing in Bevy 0.18 (Solari) is a December 2025 development post by jms55 on quality and performance work for Solari, Bevy's dynamic ray-traced lighting path planned…
100% match · <shaders><blog><article><form><free><html><intermediate><irradiance> - No Graphics API
No Graphics API is a December 2025 long-form essay by Sebastian Aaltonen arguing that modern bindless GPUs no longer need the retained-mode complexity of DirectX 12, Vulkan, and…
100% match · <blog><diagrams><form><free><html><long><post><programmers> - OpenUSD Core Spec 1.0 is Here: Now We Need You
OpenUSD Core Spec 1.0 is Here: Now We Need You is an Alliance for OpenUSD blog post by Aaron Luk and Nick Porcino announcing ratification of the OpenUSD Core Specification…
100% match · <intermediate><blog><article><domain><free><listing><one><post> - Around The World, Part 28: Scaling up
This is part 28 of Thomas ten Cate's Around The World development blog about an early-stage sea exploration game in Godot.
100% match · <intermediate><blog><article><diagrams><form><free><long><post> - Focus on Your Algorithm—NVIDIA CUDA Tile Handles the Hardware
This is an NVIDIA developer blog by Jonathan Bentz and Tony Scudiero introducing CUDA Tile in CUDA 13.1 as a virtual instruction set for tile-based GPU programming that abstracts…
100% match · <intermediate><blog><detail><diagrams><free><introducing><post><useful> - Minimalist ray-tracing leveraging only acceleration structures
This is an AnKi 3D Engine blog post by Panagiotis Christopoulos Charitos on a lightweight potato-mode ray-tracing path using only acceleration structures and ray queries instead…
100% match · <shaders><blog><approximations><form><free><long><post><programmers> - Coding Adventure: Simulating Smoke
This YouTube Coding Adventure video by Sebastian Lague builds a grid-based smoke simulation from first principles as one episode in the Coding Adventures series. It covers…
100% match · <math><intermediate><aimed><basic><free><introduction><one><programmers> - Better sRGB to greyscale conversion
Better sRGB to greyscale conversion is an October 2025 technical blog post on 30fps.net about converting gamma-encoded sRGB to greyscale without misusing Rec.
100% match · <math><shaders><intermediate><blog><approximate><article><coefficients><free> - WebGPU and the price of compiling WGSL
WebGPU and the price of compiling WGSL is a blog post by Hugo Daniel introducing a WebGPU diagnostics and compilation-benchmark tool after earlier posts on WGSL limits. It…
100% match · <shaders><intermediate><blog><basic><free><functions><html><introducing> - Reinforcement Learning 04 : Motion Fields For Interactive Character Animation
Reinforcement Learning 04 : Motion Fields For Interactive Character Animation is a YouTube implementation talk on the Animation Tech channel where Jerome rebuilds ideas from the…
100% match · <math><basic><free><functions><programmers><rather><technical><useful>