 
今天本來不想卷的,但
  上次看GAMES202
有個部分沒想通,做個記錄
  SH一瞥
  
    
SH是一組2維基函數
    抓前面m個基函數來使用
    
  
  投影到SH
  
    因為Diffuse和視角無關,上面橘色框框只是1個2維函數F
  
  
    把F投影到SH上,得到投影系數C1…Cm
  
  
  Glossy BRDF一瞥
  
    BRDF每個ωo,會對映到多個ωi
    等同於每個ωo,都對映到1個2維函數Fn
    
    在球面上取n個方向
    令每個方向為ωn
    每個ωn,都會對映到1個2維函數Fn
    
   
 
第1次投影:把BRDF投影到SH
對每個ωn,把Fn投影到SH上
  得到投影系數Tn1…Tnm
(水平方向)
  
畫成表格就是
      m ➡️  SH系數
  n
  ⬇️    T11…T1m
  ⬇️    T21…T2m
  ⬇️            :
  ⬇️    Tn1…Tnm
 方
 向
  
  用SH系數重新分組
  
    
      
        令 m=1 為一組
      
      
        可以得到1個2維函數S1
      
      
        
      
      
            m ➡️  SH系數
      
      
          n
        
          ⬇️    T11
        
        
          ⬇️    T21
        
        
          ⬇️       :
        
        
          ⬇️    Tn1
        
        
        
          
        
       
    
   
  全部分組完,可以得到m個2維函數Sm
  
  第2次投影
 
把每個2維函數Sm都投影到SH上
最後會得到m組t1m...tMm
  (垂直方向)
m = M
  
        m ➡️  SH系數
  
   M
  
    ⬇️    t11…t1m       
     
  
  
    ⬇️    t21…t2m
  
  
    ⬇️           :            
  
  
    ⬇️    tM1…tMm   
  
   SH
   系
   數
 
  
到這裡都是預計算(Offline)
  還原
  已知ωo的方向為 n=2
  
    進行m次基函數的疊加可以還原成
  
  
  
    
          m ➡️  SH系數
    
      n
    
      ⬇️       
       
    
    
      ⬇️    T21…T2m
    
    
      ⬇️            
    
    ⬇️    
     方
     向
   
  
  
    
  
  再把上面投影片
  
    藍色框框的系數cp和T21…T2m做內積
  
 
就是最後的光照結果
  
    
      |   | 
    
      | 我叫tMm,這裡叫tij | 
  
把上面的過程寫成矩陣乘法
L = ( B t ) l = B ( t l )
  
    
      |   | 
    
      | 和下面是同個意思 |