OpenGL着色器效果
我需要一个高效的openGL管道来实现线段形状的特定外观 这是我的目标:OpenGL着色器效果,opengl,glsl,shader,fbo,Opengl,Glsl,Shader,Fbo,我需要一个高效的openGL管道来实现线段形状的特定外观 这是我的目标: () 这是我在程序中已经拥有的基本体(螺旋体)之一: 在这张照片的gl_FragColor内,我正在输出碎片到相机的距离。用于此操作的管道是通常的VBO->VAO->顶点着色器->片段着色器路径 shadertoy着色器计算到屏幕每个片段中3个点的距离,并根据该距离输出颜色。但在我的例子中,我需要相反的结果。为螺旋的每个碎片计算周围碎片的颜色(在本例中)。是否需要使用FBO将场景渲染到纹理中,或者是否有快捷方式 适用于
() 这是我在程序中已经拥有的基本体(螺旋体)之一: 在这张照片的gl_FragColor内,我正在输出碎片到相机的距离。用于此操作的管道是通常的VBO->VAO->顶点着色器->片段着色器路径 shadertoy着色器计算到屏幕每个片段中3个点的距离,并根据该距离输出颜色。但在我的例子中,我需要相反的结果。为螺旋的每个碎片计算周围碎片的颜色(在本例中)。是否需要使用FBO将场景渲染到纹理中,或者是否有快捷方式
均匀
发送到着色器。然后,您可以在片段着色器中一次计算每像素和所有行。更高的行数将大大降低速度- CatmullRom样条插值从控制点获取点数据
- 从以上几点构建VBO
- 漩涡着色器:传递点位置数据
- 几何体着色器:为每个点发射精灵大小的四边形
- 片段着色器:使用exp函数从精灵四元体的中心获取平滑渐变颜色
它使用GL_RGBA16渲染到FBO以获得更高的平滑度。VBA是什么意思?当你说3点时,你指的是哪一点?我指的是VAO顶点数组对象。我所说的3点是shadertoy示例中的红蓝绿点。您为螺旋建议的方法听起来好像您不了解片段着色器是如何工作的。您对每个片段进行计算,并且只能确定当前片段的颜色。不能更改周围的片段。
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE); // additive blend