01 片元与数据
main:读输入、计算、写输出
左边是原始亮度,右边是调光后。像 C 函数一样,一行行执行。
原始亮度调光之后
最终亮度01
01
习题
带下划线的数字可以左右拖动拖动数字,或直接改代码
uniform float uInput; // 原始亮度uniform float uGain; // 保留比例void main() { float result = uInput * uGain; // = 0.48 vec3 color = vec3(result); gl_FragColor = vec4(color, 1.0);}
- 读输入
- 乘法
- 写输出
uniformJS 传入,所有片元共用main每次调用从这里开始执行=把右边的结果存入左边JS 这一侧
gl.uniform1f(uInput, 0.80)
gl.uniform1f(uGain, 0.60)uniform 是 JS 传进来的值;main 读输入、计算、写输出,像 C 函数一样从上往下执行。
试一试
- 点「减半」,结果变成多少?
- 把 uGain 拉到 0,右边变成全黑