📄The Book of Shaders-Notes
2023-12-10|2024-3-23
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向量方向上的投影.
公式:
推导过程:
Shapingfunction
绘制一条绿色的线
一个求 x 的 5 次幂的曲线
Step()
step() 插值函数需要输入两个参数。第一个是极限或阈值,第二个是我们想要检测或通过的值。对任何小于阈值的值,返回 0.0,大于阈值,则返回 1.0。
Smoothstep()
smoothstep()。当给定一个范围的上下限和一个数值,这个函数会在已有的范围内给出插值。 前两个参数规定转换的开始和结束点,第三个是给出一个值用来插值。
正弦和余弦函数
当你想用数学来制造动效,形态或去混合数值,sin 和 cos 就是你的最佳伙伴。
- sin 和 cos 返回的是规范化的值(即值域在 -1 和 1 之间).
正弦函数 Sin
仔细看 sin 曲线。观察 y 值是如何平滑地在 +1 和 -1 之间变化。
sin(x) 的绝对值(abs())。现在它看起来就像一个弹力球的轨迹
余弦函数 Cos
正弦、余弦和正切
Sine、Cosine和Tangent(通常缩写为sin、cos和tan)各自是直角三角形的边比:
颜色
定义颜色的变量可以由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。这样做的效果就是画了两条黑线,一个在画布的底边另一个在左边。
to be continued ....