游戏蛮牛学习群(纯技术交流,不闲聊):159852603
游戏蛮牛 手机端
开启辅助访问
 找回密码
 注册帐号

扫一扫,访问微社区

蛮牛译馆

关注:644

当前位置:游戏蛮牛 技术专区 蛮牛译馆

查看: 2174|回复: 37

[外文翻译] CD-ROM着色器:衍射光栅(二)

[复制链接]  [移动端链接]
排名
9658
昨日变化
4

33

主题

51

帖子

558

积分

Rank: 7Rank: 7Rank: 7Rank: 7

UID
48603
好友
6
蛮牛币
1145
威望
0
注册时间
2014-10-12
在线时间
98 小时
最后登录
2018-8-4

蛮牛译员

发表于 2018-2-22 20:12:19 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?注册帐号

x
本帖最后由 492899250 于 2018-2-22 20:30 编辑

CD-ROM着色器:衍射光栅(

这篇文章是,如何创建CD-ROMs着色器的后续。

图片1.png

你可以从下面的链接找到这个系列的所有文章。

· Part 1. The Nature of Light
· Part 2. Improving the Rainbow (Part 1)
· Part 3. Improving the Rainbow (Part 2)
· Part 4. Understanding Diffraction Grating
· Part 5. The Mathematics of Diffraction Grating
· Part 6. CD-ROM Shader: Diffraction Grating (Part 1)
· Part 7. CD-ROM Shader: Diffraction Grating (Part 2)
· Part 8. Iridescence on Mobile
· Part 9. The Mathematics of Thin-Film Interference
· Part 10. Car Paint Shader: Thin-Film Interference

在页面的底部,有本系列中用到的Unity工程下载链接

介绍

在教程的第1部分,我们创建了第一个彩虹反射的近似效果,就是CD-ROM的上的那种效果。这个着色器是基于物理的。为了正确的模拟这种反射效果,我们需要确保CD-ROM上轨道是环行排列的。这是径向反射的基础。

狭缝方向

衍射光栅的数学原理(The Mathematics of Diffraction Grating)一篇中,推导出的衍射方程有很大限制:它假设狭缝是朝同一方向的。这种情况在昆虫的外壳比较常见,而CD-ROM表面的分布是环形的。如果单纯按照上一节的方法实现,那么是无法得到我们想要的反射效果的(如下,右图)

图片2.png

为了修正这个问题,我们需要考虑,CD-ROM上狭缝的自身方向。使用普通的向量是没用的,因为狭缝的法线方向是相同的,指向远离光盘表面的方向。狭缝的切线方向矢量,才能正确反映狭缝自身的方向。

图片3.png

如上图所示,法向量N是蓝色的,切向量T是红色的。光源、观察者分别和法线N之间的夹角,被称为θL和θV。类似地,和T之间的夹角被称为ƏLƏV。如前所述,使用θL和θV,我们计算出的是“扁”的反射,因为所有狭缝的N是相同的。我们需要使用ƏLƏV,这样才能正确获取狭缝的自身方向。

至此,我们知道:

图片4.png

因为T N是正交的,所以下面的属性也是成立的。

图片5.png

因为Cg提供了点积的计算,所以这很简单,剩下的就是计算T

计算切向量

为了完成着色器,我们需要计算切向量T。通常,这会在网格顶点中计算,但是CD-ROM的表面非常简单,我们可以直接计算。请记住,本教程介绍的方法相当简单,同时假设CD-ROM的表面的UV贴图是正确的。

图片6.png

上图显示了切向量的计算过程。这里有一个潜在的假设,光盘表面的UV贴图是方形面片,坐标范围在(0,0) 到 (1,1)之间。一旦明确这些,CD-ROM表面的每一点,都可以重映射到 (-1,-1) 和(+1,+1)之间。随着这一参考系的变换,这个点有了新的坐标,它的方向远离中心(绿色箭头)。将这个方向旋转90度,就是CD-ROM上,环形轨道的切向量方向(红色箭头)。

cd_tangent_in_world_space.png

这些操作需要在着色器的surf函数中完成,因为在光照函数LightingDiffraction前,UV坐标是不可用的。

[C#] 纯文本查看 复制代码
// IN.uv_MainTex: [ 0, +1]

// uv:            [-1, +1]

fixed2 uv = IN.uv_MainTex * 2 -1;

fixed2 uv_orthogonal = normalize(uv);

fixed3 uv_tangent = fixed3(-uv_orthogonal.y, 0, uv_orthogonal.x);


现在剩下的就是将计算出的切向量,从物体空间转换到世界空间。转换需要考虑上物体的变化、旋转和缩放。

[C#] 纯文本查看 复制代码
worldTangent = normalize( mul(unity_ObjectToWorld, float4(uv_tangent, 0)) );


整合……
现在我们所需要的计算的就是,颜色对彩虹反射的影响。

[C#] 纯文本查看 复制代码
inline fixed4 LightingDiffraction(SurfaceOutputStandard s, fixed3 viewDir, UnityGI gi)

{

// Original colour

fixed4 pbr = LightingStandard(s, viewDir, gi);

// --- Diffraction grating effect ---

float3 L = gi.light.dir;

float3 V = viewDir;

float3 T = worldTangent;

 

float d = _Distance;

float cos_ThetaL = dot(L, T);

float cos_ThetaV = dot(V, T);

float u = abs(cos_ThetaL - cos_ThetaV);

 

if (u == 0)

return pbr;

 

// Reflection colour

fixed3 color = 0;

for (int n = 1; n <= 8; n++)

{

float wavelength = u * d / n;

color += spectral_zucconi6(wavelength);

}

color = saturate(color);

 

// Adds the refelection to the material colour

pbr.rgb += color;

return pbr;

}

结论

图片7.png

你可以从下面的链接找到这个系列的所有文章:
    Part 1. The Nature of Light
    Part 2. Improving the Rainbow (Part 1)
    Part 3. Improving the Rainbow (Part 2)
    Part 4. Understanding Diffraction Grating
    Part 5. The Mathematics of Diffraction Grating
    Part 6. CD-ROM Shader: Diffraction Grating (Part 1)
    Part 7. CD-ROM Shader: Diffraction Grating (Part 2)
    Part 8. Iridescence on Mobile
    Part 9. The Mathematics of Thin-Film Interference
    Part 10. Car Paint Shader: Thin-Film Interference


你可以从Patreon下载CD-ROM shader的Unity包。

原文标题:CD-ROM Shader: Diffraction Grating – Part 2
原文链接:https://www.alanzucconi.com/2017/07/15/cd-rom-shader-2/


194927g9ej44kj0sjjrgr0.png

回复

使用道具 举报

7日久生情
2931/5000
排名
413
昨日变化

0

主题

543

帖子

2931

积分

Rank: 7Rank: 7Rank: 7Rank: 7

UID
52206
好友
3
蛮牛币
6018
威望
0
注册时间
2014-10-30
在线时间
792 小时
最后登录
2018-11-19
QQ
发表于 2018-2-23 08:30:57 | 显示全部楼层
谢谢分享

回复

使用道具 举报

7日久生情
2084/5000
排名
1953
昨日变化
4

7

主题

720

帖子

2084

积分

Rank: 7Rank: 7Rank: 7Rank: 7

UID
183904
好友
6
蛮牛币
4498
威望
0
注册时间
2016-11-15
在线时间
681 小时
最后登录
2018-11-19
QQ
发表于 2018-2-23 10:14:29 | 显示全部楼层
那不是10美金才能下载么
[发帖际遇]: zzzzzzZ 乐于助人,奖励 2 蛮牛币. 幸运榜 / 衰神榜

回复 支持 反对

使用道具 举报

6蛮牛粉丝
1055/1500
排名
2648
昨日变化
14

0

主题

339

帖子

1055

积分

Rank: 6Rank: 6Rank: 6

UID
158859
好友
0
蛮牛币
1248
威望
0
注册时间
2016-7-26
在线时间
196 小时
最后登录
2018-11-19
发表于 2018-2-24 08:28:12 | 显示全部楼层
我只想说一句很好很强大!

回复 支持 反对

使用道具 举报

7日久生情
1917/5000
排名
4301
昨日变化
4

0

主题

1335

帖子

1917

积分

Rank: 7Rank: 7Rank: 7Rank: 7

UID
267381
好友
6
蛮牛币
3212
威望
0
注册时间
2018-2-1
在线时间
258 小时
最后登录
2018-11-6
发表于 2018-2-25 11:42:41 | 显示全部楼层

回复

使用道具 举报

7日久生情
3370/5000
排名
1807
昨日变化
2

0

主题

2125

帖子

3370

积分

Rank: 7Rank: 7Rank: 7Rank: 7

UID
219676
好友
1
蛮牛币
2526
威望
0
注册时间
2017-7-12
在线时间
537 小时
最后登录
2018-11-19

活力之星

发表于 2018-2-26 09:47:22 | 显示全部楼层
谢谢分享
[发帖际遇]: 夜雨微凉 发帖时在路边捡到 2 蛮牛币,偷偷放进了口袋. 幸运榜 / 衰神榜

回复

使用道具 举报

6蛮牛粉丝
1360/1500
排名
5381
昨日变化
2

6

主题

831

帖子

1360

积分

Rank: 6Rank: 6Rank: 6

UID
236677
好友
0
蛮牛币
2229
威望
0
注册时间
2017-8-9
在线时间
273 小时
最后登录
2018-9-11
发表于 2018-2-26 10:13:43 | 显示全部楼层
感谢分享

回复

使用道具 举报

3偶尔光临
166/300
排名
11270
昨日变化
6

1

主题

29

帖子

166

积分

Rank: 3Rank: 3Rank: 3

UID
268668
好友
0
蛮牛币
253
威望
0
注册时间
2018-2-13
在线时间
52 小时
最后登录
2018-11-13
发表于 2018-3-9 09:07:17 | 显示全部楼层
666666666666666666666666666

回复 支持 反对

使用道具 举报

5熟悉之中
591/1000
排名
6847
昨日变化
2

0

主题

285

帖子

591

积分

Rank: 5Rank: 5

UID
250350
好友
2
蛮牛币
588
威望
0
注册时间
2017-10-23
在线时间
124 小时
最后登录
2018-11-10
发表于 2018-3-16 09:44:03 | 显示全部楼层

谢谢分享

回复

使用道具 举报

3偶尔光临
291/300
排名
15676
昨日变化
349

0

主题

81

帖子

291

积分

Rank: 3Rank: 3Rank: 3

UID
143351
好友
0
蛮牛币
25
威望
0
注册时间
2016-3-24
在线时间
166 小时
最后登录
2018-11-19
发表于 2018-3-16 15:26:44 | 显示全部楼层
感谢感谢感谢感谢感谢感谢感谢

回复 支持 反对

使用道具 举报

2初来乍到
102/150
排名
22322
昨日变化
5

0

主题

63

帖子

102

积分

Rank: 2Rank: 2

UID
152102
好友
0
蛮牛币
62
威望
0
注册时间
2016-6-15
在线时间
19 小时
最后登录
2018-8-11
发表于 2018-3-16 16:13:32 | 显示全部楼层
来学习了

回复

使用道具 举报

0

主题

13

帖子

17

积分

Rank: 1

UID
4775
好友
0
蛮牛币
7
威望
0
注册时间
2013-9-29
在线时间
4 小时
最后登录
2018-6-22
发表于 2018-3-16 20:44:05 | 显示全部楼层
很不错的逻辑
感谢楼主分享
努力!加油!

回复 支持 反对

使用道具 举报

排名
33793
昨日变化
5

0

主题

32

帖子

48

积分

Rank: 1

UID
237239
好友
0
蛮牛币
2
威望
0
注册时间
2017-8-12
在线时间
8 小时
最后登录
2018-3-19
发表于 2018-3-19 17:58:08 | 显示全部楼层
J拆开看卡萨丁出生地
[发帖际遇]: 梁启凡 在网吧通宵,花了 2 蛮牛币. 幸运榜 / 衰神榜

回复 支持 反对

使用道具 举报

3偶尔光临
268/300
排名
12264
昨日变化
5

12

主题

126

帖子

268

积分

Rank: 3Rank: 3Rank: 3

UID
267911
好友
0
蛮牛币
318
威望
0
注册时间
2018-2-6
在线时间
60 小时
最后登录
2018-10-10
发表于 2018-3-23 10:37:36 | 显示全部楼层
thank your share

回复

使用道具 举报

5熟悉之中
535/1000
排名
5322
昨日变化
27

4

主题

128

帖子

535

积分

Rank: 5Rank: 5

UID
12962
好友
0
蛮牛币
31
威望
0
注册时间
2014-1-19
在线时间
147 小时
最后登录
2018-11-19
发表于 2018-4-8 08:42:25 | 显示全部楼层
qqqqqqqqqqqqqqq

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册帐号

本版积分规则

关闭

站长推荐 上一条 /1 下一条

快速回复 返回顶部 返回列表