青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

黎明的剔透里伸出了你沁清的曖昧

Graphics|EngineDev|GameDev|2D&3D Art

  C++博客 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
  60 隨筆 :: 1 文章 :: 18 評論 :: 0 Trackbacks
一、Refract & Reflect  
Snell定律描述了光線從一個介質傳播到另外一個介質時,入射角、折射角以及介質折射率的關系。通過snell定律,可以根據入射光的方向向量求取折射光的方向向量。
Fresnel定律完善了光的衍射理論,當光線到達材質交界面時,一部分光被反射,另外一部分發生折射,這個現象被稱為Fresnel Effect。菲涅爾現象混合了反射與折射,使得物體更加真實,理論物理中的Fresnel公式很復雜,因而在實時計算機圖形學中,只要在最終效果上滿足人們的視覺感受就可以了。在Cook-Torrance光照模型中計算specular光的rough surface時用到了Fresnel系數。
   F = f + (1-f) * (1 - V · H)FresnelPower
其中f入射角為0時的菲涅爾反射系數,V視角向量,H半向量;
 color = factor * 反射光顏色 + (1 - factor) * 折射光顏色

Snell中的折射率本質上反映的是光在介質中傳播速度以及折射方向;
Fresnel中折射系系數反映的是光在透明介質表面被折射的光通量的比率;
這些可以模擬水表面的折射與反射現象等等

Vertex shader:
 1const float Eta=0.6;
 2const float FresnelPower=5.0;
 3const float F=((1.0-Eta)*(1.0-Eta))/((1.0+Eta)*(1.0+Eta));
 4varying vec3 Reflect;
 5varying vec3 Refract;
 6varying float Ratio;
 7void main(void){
 8
 9    vec4 ecposition = gl_ModelViewMatrix* gl_Vertex;
10    vec3 ecposition3 = ecposition.xyz/ecposition.w;
11    vec3 i = normalize(ecposition3);
12    vec3 n = normalize(gl_NormalMatrix*gl_Normal);
13    Ratio = F + (1.0-F) * pow(1.0 - dot(i, n),FresnelPower);
14    
15    Refract = refract(i,n,Eta);
16    Refract = vec3(gl_TextureMatrix[0* vec4(Refract,1.0));
17
18    Reflect = reflect(i,n);
19    Reflect = vec3(gl_TextureMatrix[1* vec4(Reflect,1.0));
20
21    gl_Position = ftransform();  
22}

Frag Shader:
 1varying vec3 Reflect;
 2varying vec3 Refract;
 3varying float Ratio;
 4uniform sampler2d tex;
 5void main(void){
 6    vec3 refractColor = vec3 (texture2D(tex,Refract));
 7    vec3 reflectColor = vec3 (texture2D(tex,Reflect)); 
 8    vec3 Color = mix(refractColor, reflectColor, Ratio);
 9     gl_FragColor = vec4( Color,1.0);
10}

11 







如果要突出某種顏色RGB,產生色散,可以分離折射的rgb值,得到另外一種效果:
 1const float EtaR=0.3;
 2const float EtaG=0.67;
 3const float EtaB=0.9;
 4varying vec3 RefractR;
 5varying vec3 RefractG;
 6varying vec3 RefractB;
 7
 8RefractR = refract(i,n,EtaR);
 9    RefractR = vec3(gl_TextureMatrix[0* vec4(RefractR,1.0));
10
11    RefractG = refract(i,n,EtaG);
12    RefractG = vec3(gl_TextureMatrix[0* vec4(RefractG,1.0));
13    
14    RefractB = refract(i,n,EtaB);
15    RefractB = vec3(gl_TextureMatrix[0* vec4(RefractB,1.0));

1    vec3 refractColor ;
2        refractColor.r= vec3 (texture2D(tex,RefractR));
3        refractColor.g= vec3 (texture2D(tex,RefractG));
4        refractColor.b= vec3 (texture2D(tex,RefractB));




二、Diffraction
GPU Gem1里面有一章講解
光的衍射:光在傳播過程中,遇到透明或者不透明的障礙物,繞過障礙物產生偏離直線傳播的現象稱為光的衍射。
當表面的細節比光的波長小很多時,對于這些小尺寸的細節,例如CD,波效應就不能忽略,
shader一般步驟是:先把可見光的波長轉換到0~1之間,計算半向量在切線的投影來計算u,
原理不是很懂
就這樣吧。。
vertex shader
 1uniform vec3 eyeposition;
 2uniform vec3 lightposition;
 3vec4  HighlightColor=(1.0,1.0,1.0,1.0);
 4varying vec4 Color;
 5attribute vec3 Tangent;
 6vec3 lambda2rgb(float lambda){
 7     const float ultraviolet =400.0
 8    const float infrared =700.0;     
 9    //轉換可見光到0~1
10    float a = (lambda - ultraviolet)/(infrared - ultraviolet); 
11    const float c = 10.0//圖的寬度
12    vec3 b = vec3(a) - vec3(0.75,0.5,0.25);
13    return max((1.0 - c*b*b), 0.0);
14}

15void main(void){
16    vec3 objPosition = vec3 (gl_ModelViewMatrix * gl_Vertex);
17    vec3 Normal = normalize (gl_NormalMatrix * gl_Normal);
18    vec3 LightDir = normalize (lightposition - objPosition);
19    vec3 EyeDir = normalize (eyeposition - objPosition);
20    vec3 HalfVec = normalize (LightDir + EyeDir);
21
22   vec3 T=normalize(gl_NormalMatrix * Tangent);
23   float u = abs(dot(T, HalfVec));
24
25   vec3 diffColor=vec3(0.0);
26
27   const int numspectralorders=3;
28   for(int m=1; m<=numspectralorders;++m){
29       float lambda =660 * u / float(m);
30        diffColor += lambda2rgb(lambda);
31   }

32
33   float w = dot(Normal , HalfVec);
34   float e = 2 * u / w;
35   vec3 hilight = exp(-* e) * HighlightColor.rgb;
36
37
38   const float diffAtten = 0.8
39   Color = vec4(diffAtten * diffColor + hilight, 1.0);
40  
41    gl_Position = ftransform();
42
43    
44}
Frag shader

1varying vec4 Color;
2void main(void)
3{
4   gl_FragColor =Color ;
5}





posted on 2012-03-29 14:04 情絕格調(fresmaster) 閱讀(4303) 評論(0)  編輯 收藏 引用 所屬分類: GraphicsCoding
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲麻豆一区| 午夜精品久久久久| 可以看av的网站久久看| 激情欧美一区二区| 免费av成人在线| 久久亚洲视频| 亚洲精品国产日韩| 亚洲精品美女91| 欧美日韩在线精品| 亚洲专区一区| 性做久久久久久久久| 狠狠久久综合婷婷不卡| 欧美黄色小视频| 欧美日韩亚洲三区| 久久国产精彩视频| 免费在线观看日韩欧美| 亚洲综合色丁香婷婷六月图片| 亚洲欧美久久| 亚洲国产影院| 亚洲特黄一级片| 激情成人av在线| 亚洲三级网站| 国产情人综合久久777777| 欧美 日韩 国产一区二区在线视频| 欧美激情网友自拍| 欧美亚洲一区| 欧美电影免费观看高清完整版| 亚洲一区中文| 久久久久一区| 亚洲中字黄色| 欧美成人自拍视频| 久久激情综合| 欧美日韩国产精品一卡| 久久久久久久久久码影片| 欧美日本韩国一区二区三区| 欧美一区国产一区| 欧美激情bt| 另类酷文…触手系列精品集v1小说| 欧美精品一线| 老司机一区二区三区| 国产精品伦理| 亚洲精品视频在线观看免费| 黄色日韩精品| 亚洲在线观看视频| 亚洲精品视频在线观看免费| 久久福利毛片| 新67194成人永久网站| 欧美乱人伦中文字幕在线| 欧美不卡视频一区发布| 国产亚洲欧美一级| 亚洲天堂偷拍| 亚洲特级片在线| 欧美激情一区二区三区| 欧美成人按摩| 一区二区三区在线观看国产| 亚洲综合三区| 午夜精品久久久久久久白皮肤 | 亚洲免费影院| 欧美11—12娇小xxxx| 久久久噜噜噜久噜久久| 国产精品一区二区久久久| 日韩性生活视频| 一区二区三区欧美成人| 欧美精品一卡二卡| 亚洲国产一区二区三区高清| 亚洲激情在线观看视频免费| 久久嫩草精品久久久精品一| 久久午夜精品| 1000部精品久久久久久久久| 久久www免费人成看片高清| 久久国产精品99久久久久久老狼| 欧美四级电影网站| 亚洲一级片在线观看| 午夜视频在线观看一区| 国产精品久久久久一区二区三区共| 日韩视频中文字幕| 亚洲综合99| 国产女人水真多18毛片18精品视频 | 国产精品影片在线观看| 亚洲一区在线免费观看| 欧美在线3区| 一区二区三区在线视频观看| 久久久人人人| 91久久国产综合久久| 国产精品99久久久久久久vr| 国产精品你懂的在线欣赏| 亚洲欧美国产三级| 久久婷婷国产综合精品青草| 亚洲国产精品va在线看黑人 | 久久精品国产免费| 欧美承认网站| 亚洲小少妇裸体bbw| 国产欧美日本| 老鸭窝91久久精品色噜噜导演| 亚洲国产精品小视频| 亚洲综合色自拍一区| 国内在线观看一区二区三区| 欧美成人免费在线观看| 一区二区激情视频| 久久久精品国产免大香伊| 亚洲人成在线观看一区二区| 国产精品啊啊啊| 久久久久久电影| 日韩手机在线导航| 久久久亚洲欧洲日产国码αv| 亚洲精品国产精品久久清纯直播| 欧美性开放视频| 久久久久久伊人| 中文av一区特黄| 欧美电影电视剧在线观看| 中文国产成人精品| 在线观看日韩欧美| 国产精品国产福利国产秒拍 | 午夜精品久久99蜜桃的功能介绍| 鲁大师成人一区二区三区| 在线一区二区日韩| 精品福利电影| 国产精品日韩久久久| 欧美激情在线免费观看| 久久精视频免费在线久久完整在线看| 91久久在线视频| 久久久久99| 午夜精品视频一区| 99re6热在线精品视频播放速度 | 免费成人黄色片| 午夜精品福利视频| 日韩一级在线观看| 亚洲电影激情视频网站| 久久人人97超碰国产公开结果| 亚洲综合日韩中文字幕v在线| 亚洲精品一区二区网址| 极品尤物av久久免费看| 国产丝袜一区二区| 国产精品亚洲综合一区在线观看| 欧美日韩国产色视频| 欧美成人a视频| 久久亚洲精品一区二区| 久久精品国产亚洲a| 亚洲免费中文| 亚洲综合清纯丝袜自拍| 亚洲午夜女主播在线直播| 日韩视频在线免费观看| 亚洲欧洲日本专区| 亚洲国产综合在线| 亚洲动漫精品| 亚洲国产精品v| 亚洲国产成人久久综合| 亚洲国产精品久久久久久女王| 免费观看一级特黄欧美大片| 久久一二三四| 久久亚洲私人国产精品va| 久久久精品一区| 欧美影院精品一区| 久久精品一区二区国产| 久久久久一区| 快射av在线播放一区| 欧美成人自拍| 亚洲人屁股眼子交8| 亚洲精品小视频| 中文久久精品| 午夜在线观看免费一区| 欧美在线视频免费| 久久久久久亚洲精品不卡4k岛国| 久久综合给合| 欧美激情在线有限公司| 欧美日韩综合网| 国产精品亚洲成人| 在线看成人片| 99精品国产高清一区二区| 亚洲欧美激情一区二区| 久久精品亚洲精品| 欧美成人激情在线| 99精品99久久久久久宅男| 亚洲女同在线| 美女啪啪无遮挡免费久久网站| 欧美电影美腿模特1979在线看 | 久久久久免费| 欧美日韩成人激情| 国产视频久久久久| 日韩午夜电影av| 久久超碰97中文字幕| 欧美成人综合| 亚洲欧美日本国产有色| 免费视频一区二区三区在线观看| 国产精品magnet| 亚洲国产另类久久久精品极度| 亚洲一区在线免费观看| 老司机免费视频久久| 一区二区毛片| 美女久久网站| 国产区精品在线观看| 亚洲最新中文字幕| 久久天天躁狠狠躁夜夜av| 一本色道久久加勒比88综合 | 亚洲日本中文字幕| 欧美一区高清| 国产精品jizz在线观看美国| 亚洲国产一区二区a毛片| 欧美在线一区二区三区| 亚洲日本中文字幕|