- the book of shaders 原图
![](https://i-blog.csdnimg.cn/blog_migrate/fc39be45c75931d0ae81b8eae1346d53.png)
- smoothstep函数定义
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/74d280d5acb9b56caf28910e290dc2ba.png)
- 问题
按函数定义确实对于abs(y-x)值大于0.02会返回0,但是对于abs(y-x)值小于0.02的值应该是返回一个较小的值,而不是图像上表现出来的1。以下是自己跑的效果
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/c732e6e223d97f43ea7d4c8d706f2969.png)
自己的shader
const char* vertexShaderSource = "#version 330 core\n"
"layout(location=0) in vec3 aPos;\n"
"out vec3 ourColor;\n"
"void main(){\n"
"gl_Position=vec4(aPos,1.0f);\n"
"vec2 st=aPos.xy;\n"
"float p=smoothstep(0.02,0.0,abs(st.y-st.x));\n"
"ourColor=p*vec3(0.0f,1.0f,0.0f);\n"
"}\0";
const char* fragmentShaderSource = "#version 330 core\n"
"in vec3 ourColor;\n"
"out vec4 FragColor;\n"
"void main(){\n"
"FragColor=vec4(ourColor,1.0f);\n"
"}\0";```
这明显有问题,求大佬解答下。