生活随笔
收集整理的這篇文章主要介紹了
                                
NPR-Hatching素描渲染
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.                        
 
                                
                            
                            
                            Hatching(素描)渲染——通過(guò)光照的強(qiáng)弱,用不同深淺的紋理,實(shí)現(xiàn)一種類似素描效果。
 
?
 
?
 
 
 
Hatching的實(shí)現(xiàn)原理是:通過(guò)N.L計(jì)算點(diǎn)受光的強(qiáng)弱,將該值分成不同的段,不同的光照強(qiáng)度對(duì)應(yīng)不同深淺的素描貼圖
 
?
 
 
 
算法對(duì)應(yīng)的VS如下:
 
 
  [cpp]?view plaincopy    
VS_OUTPUT?vs_main(?VS_INPUT?Input?)??{?????VS_OUTPUT?Output;???????Output.Position?=?mul(?Input.Position,?matViewProjection?);?????Output.Texcoord?=?Input.Texcoord;??????????float3?normalW?=?mul(?Input.Normal,?matView);?????float?diffuse?=?min(?1,?max(0,?dot(?vecLightDir,?normalW)));????//把diffuse平方兩次是為了,把亮度降低點(diǎn),把整體亮度向暗方向偏移,以得到更好的視覺(jué)效果。?????diffuse?=?diffuse?*?diffuse;?????diffuse?=?diffuse?*?diffuse;??????????float?factor?=?diffuse?*?6.0;??//?通過(guò)兩個(gè)weight,來(lái)記錄權(quán)值,減少傳入ps的變量數(shù)。?????float3?weight0?=?0.0;?????float3?weight1?=?0.0;???????//?不同光照強(qiáng)度,對(duì)應(yīng)不同的權(quán)值,及不同的紋理貼圖?????if(?factor?>?5.0)?????{????????weight0.x?=?1;?????}?????else?if(?factor?>?4.0)?????{????????weight0.x?=?factor?-?4.0;????????weight0.y?=?1.0?-?weight0.x;?????}?????else?if(?factor?>?3.0)?????{????????weight0.y?=?factor?-?3.0;????????weight0.z?=?1.0?-?weight0.y;?????}?????else?if(?factor?>?2.0)?????{????????weight0.z?=?factor?-?2.0;????????weight1.x?=?1.0?-?weight0.z;?????}?????else?if(?factor?>?1.0)?????{????????weight1.x?=?factor?-?1.0;????????weight1.y?=?1.0?-?weight1.x;??????}?????else?if(?factor?>?0.0)?????{????????weight1.y?=?factor;????????weight1.z?=?1.0?-?weight1.y;?????}?????Output.Weight0?=?weight0;?????Output.Weight1?=?weight1;??????????return(?Output?);???????}?? 
 
PS為:
 
 
  [c-sharp]?view plaincopy    
struct?PS_INPUT??{?????float2?tex?????:?TEXCOORD0;?????float3?weight0?:?TEXCOORD1;?????float3?weight1?:?TEXCOORD2;??};????float4?ps_main(?PS_INPUT?input)?:?COLOR0??{???????float4?hattch0?=?tex2D(hattch0Map,?input.tex)*input.weight0.x;?????float4?hattch1?=?tex2D(hattch1Map,?input.tex)*input.weight0.y;?????float4?hattch2?=?tex2D(hattch2Map,?input.tex)*input.weight0.z;?????float4?hattch3?=?tex2D(hattch3Map,?input.tex)*input.weight1.x;?????float4?hattch4?=?tex2D(hattch4Map,?input.tex)*input.weight1.y;?????float4?hattch5?=?tex2D(hattch5Map,?input.tex)*input.weight1.z;??????????return?hattch0?+?hattch1?+?hattch2???????????+?hattch3?+?hattch4?+?hattch5;???????}?? 
 
?
 
最終效果
 
                            總結(jié)
                            
                                以上是生活随笔為你收集整理的NPR-Hatching素描渲染的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
                            
                            
                                如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。