[程式] 超新手 shader language 教学文 (三a)

楼主: meowyih (meowyih)   2021-09-28 14:24:37
有人问为什么 youtube 看的教学都是用拉的,
我前面几篇都要自己写 code?
那种拉来拉去的工具叫 Visual Shader Editor,
为了说明 Visual Shader Editor 和 Shader Language 的关系,
我做了个影片,
影片会用 Visual Shader Editor 重写上面雷射光的 code。
// code 原来大概是长这样
vec2 uv.y = uv.y - 0.5;
vec4 color = vec4(0.9,0.5,0.3,1);
float coeff = abs(5.0/(200*uv.y));
fragColor = (coeff,coeff,coeff,1)*color;
影片
https://youtu.be/StYf2IEB70U
影片说明
0:00 - 0:23 建立一个 ColorRect
0:23 - 0:55 改画面大小和颜色
0:55 - 1:09 打开 Visual Shader Editor
1:09 - 1:40 把 Spatial mode 改成 CanvasItem,并建立 uv input
1:40 - 2:28 取得 uv.y 的值
2:28 - 3:01 uv.y = uv.y - 0.5 (画面中间)
3:01 - 3:48 coeff = abs( 5.0 / ( 100 * uv.y ))
3:48 - 5:30 COLOR = vec4(coeff, coeff, coeff, 1) * vec4(0.9, 0.3, 1)
以直接画在一个 2D canvas 的例子,
自己写 code 比用 visual shader editor 简单易懂多了。
visual shader editor 用在 3D 物件的着色比较好用。
而且不先学写 code,
直接学拉来拉去那套,
应该也看不懂吧?
至少我是这样啦
作者: ddavid (谎言接线生)   2021-09-28 15:00:00
想到之前看到一则twitter就能放下的shader效果https://twitter.com/zozuar/status/1440776076846776320不是哲学,而是数学XD
作者: dklassic (DK)   2021-09-28 16:42:00
我觉得真正不要拉的理由会是能实作的内容会受限 XD用拉的可以直接在中间 Debug 视觉成效还是很实用但是用拉的话通常都不能用到所有 Shader 功能像 Unity 就是用拉的会做不了 Geometry Shader
作者: skdXD (哈哈镜)   2021-09-29 01:52:00
Unity也可以用写的啦,不要乱带风向
作者: dklassic (DK)   2021-09-29 02:21:00
我是说“在 Unity 用拉的”.....没必要火气这么大直接说乱带风向吧 OrzUnity 用拉的,的“Shader Graph”是不支援 Geometry 啊
作者: a82611141   2021-09-29 03:39:00
作者: LayerZ (無法如願)   2021-10-01 17:04:00
用拉的...拉出效能爆炸要修的时候就知道了?
作者: dklassic (DK)   2021-10-01 19:48:00
好问题,有什么图形编辑相对原生的效能差距研究吗?像是 Unity 里面提供的选项其实我都想不到会有什么转译的缺失反过来用 Shader Graph 也可以避免要对三种 pipeline各写一个版本的问题 XD啊不对,只能适用 HDRP 跟 URP XD

Links booklink

Contact Us: admin [ a t ] ucptt.com