Opengl用到smoothstep函数问题

  1. the book of shaders 原图
  2. smoothstep函数定义在这里插入图片描述
  3. 问题
    按函数定义确实对于abs(y-x)值大于0.02会返回0,但是对于abs(y-x)值小于0.02的值应该是返回一个较小的值,而不是图像上表现出来的1。以下是自己跑的效果
    在这里插入图片描述
    自己的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";```
这明显有问题,求大佬解答下。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SmoothStep函数是一个用于生成平滑过渡的函数。它接受三个参数:t1,t2和x。首先,x的值会被标准化到0到1的范围内,公式为(x-t1)/(t2-t1)。然后,这个标准化后的值会通过一个三次多项式函数进行平滑处理,公式为x*x*(3-2*x)。最后,函数返回处理后的值。 SmoothStep函数的作用是在给定的范围内生成平滑的过渡效果。当x的值在t1和t2之间时,函数的返回值会在0到1之间变化。当x小于t1时,返回值为0;当x大于t2时,返回值为1。在t1和t2之间的过渡区域内,返回值会平滑地从0过渡到1。 SmoothStep函数可以用于各种应用,比如在图形渲染中实现平滑的颜色过渡效果,或者在动画中实现平滑的运动效果。 引用\[1\]中给出了SmoothStep函数的具体实现代码,而引用\[2\]中提到了一个类似于SmoothStep函数的公式,它也可以用于生成平滑过渡效果。这个公式是saturate((x-0.5)/max(0.001,a)+0.5),它将x的值在某一范围内进行缩放,并将结果限定在0到1之间。 总结来说,SmoothStep函数是一个用于生成平滑过渡效果的函数,它可以通过调整参数t1和t2来控制过渡的范围,而函数的返回值会在0到1之间平滑地变化。 #### 引用[.reference_title] - *1* [【Shader Graph】SmoothStep节点详解及其应用](https://blog.csdn.net/weixin_61427881/article/details/127839417)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [Unity Shader中常用函数及其几何意义--持续更新ing](https://blog.csdn.net/u010778229/article/details/107285163)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值