📄The Book of Shaders-Notes

2023-12-10|2024-3-23
SHILIN BLOG
SHILIN BLOG
type
status
date
slug
summary
tags
category
icon
password

设置Uniform (统一值)

gl_FragCoord

  • gl_FragCoord存储了活动线程正在处理的像素或屏幕碎片的坐标.是一个 vec4 类型的变量 (x, y, z, 1/w), 其中 x, y 是当前片元的窗口坐标,OpenGL 默认以窗口左下角为原点.
  • gl_FragCoord存储了活动线程正在处理的像素或屏幕碎片的坐标.有了它我们就知道了屏幕上的哪一个线程正在运转.
  • 在 GLSL 中,您可以与 XYZW、STPQ 或 RGBA 混合。它们的含义完全相同.所以 position.st 与 position.xy 完全相同.但是,您不允许组合不同组中的混合蒙版。所以 position.xt 是不允许的.

向量点乘(内积)

点乘的几何意义是可以用来表征或计算两个向量之间的夹角,以及在b向量在a向量方向上的投影.
公式:
notion image
推导过程:
notion image

Shapingfunction

绘制一条绿色的线

一个求 x 的 5 次幂的曲线

Step()

step() 插值函数需要输入两个参数。第一个是极限或阈值,第二个是我们想要检测或通过的值。对任何小于阈值的值,返回 0.0,大于阈值,则返回 1.0。

Smoothstep()

smoothstep()。当给定一个范围的上下限和一个数值,这个函数会在已有的范围内给出插值。 前两个参数规定转换的开始和结束点,第三个是给出一个值用来插值。

正弦和余弦函数

当你想用数学来制造动效,形态或去混合数值,sin 和 cos 就是你的最佳伙伴。
  • sin 和 cos 返回的是规范化的值(即值域在 -1 和 1 之间).

正弦函数 Sin

notion image
仔细看 sin 曲线。观察 y 值是如何平滑地在 +1 和 -1 之间变化。
sin(x) 的绝对值(abs())。现在它看起来就像一个弹力球的轨迹
notion image

余弦函数 Cos

notion image
notion image

正弦、余弦和正切

Sine、Cosine和Tangent(通常缩写为sin、cos和tan)各自是直角三角形的边比:
notion image

颜色

定义颜色的变量可以由x, .y, .z来表示,也可以被写作.r, .g, .b 和 .s, .t, .p。(.s, .t, .p通常被用做后面章节提到的贴图空间坐标)你也可以通过使用索引位置[0], [1] 和 [2]来访问向量.

GLSL函数:mix(x, y, a)

这个函数让你以百分比混合两个值。百分比的取值范围是0到1!

混合颜色

玩玩渐变

mix() 函数有更多的用处。我们可以输入两个互相匹配的变量类型,以便获得了混合颜色单独通道 .r,.g 和 .b的能力.

HSB

HSB代表色相、饱和度和亮度(或值),是一种更直观、更有用的颜色组织. 将x坐标(位置)映射到Hue值并将y坐标映射到明度,我们就得到了五彩的可见光光谱。这样的色彩空间分布实现起来非常方便,比起RGB,用HSB来拾取颜色更直观.

形状

长方形

step()函数会让每一个小于0.1的像素变成黑色(vec3(0.0))并将其余的变成白色(vec3(1.0))。left 乘 bottom 效果相当于逻辑 AND —— 当 x y 都为 1.0 时乘积才能是 1.0。这样做的效果就是画了两条黑线,一个在画布的底边另一个在左边。
notion image
to be continued ....
HongKong-香港街头摄影A Plague Tale:Requiem_In-game photography