【发布时间】:2018-04-20 11:36:37
【问题描述】:
我正在关注这个网站:https://thebookofshaders.com/05/
我现在正在处理这段代码,但当我将不同的值插入函数时,我似乎无法理解 pow 函数是如何改变行的:
// Author: Inigo Quiles
// Title: Expo
#ifdef GL_ES
precision mediump float;
#endif
#define PI 3.14159265359
uniform vec2 u_resolution;
uniform vec2 u_mouse;
uniform float u_time;
float plot(vec2 st, float pct){
return smoothstep( pct-0.02, pct, st.y) -
smoothstep( pct, pct+0.02, st.y);
}
void main() {
vec2 st = gl_FragCoord.xy/u_resolution;
float y = pow(st.x, 1.5);<-- 1.5 what is it doing exactly? how does changing the values make the line change in relation to the st.x value?
vec3 color = vec3(y);
float pct = plot(st,y);
color = (1.0-pct)*color+pct*vec3(0.0,1.0,0.0);
gl_FragColor = vec4(color,1.0);
}
因此,现在坚持使用 pow 函数以及更改值与 st.x 值相关的工作原理
【问题讨论】:
-
您阅读过规范吗? khronos.org/registry/OpenGL-Refpages/gl4/html/pow.xhtml... 所以说
10 ^ 1.5- 如果你不明白,请看这里:math.stackexchange.com/questions/21381/… -
10是st.x的一个例子。st.x可以是任何东西。 -
好的,感谢您的反馈和帮助。我想我的数学很弱,所以我正在努力解决这个问题。你是否建议我回到基础学习数学,然后再回到这段旅程?
-
荒谬的是,这个问题被关闭为题外话。这个问题和出色的答案是 stackoverflow 有多好的一个例子。