163得票5回答
顶点着色器 vs 片段着色器

我阅读了一些有关Cg的教程,但有一件事对我来说不太清楚。顶点着色器和片元着色器之间到底有什么区别?在哪些情况下,一个比另一个更适合使用?

76得票1回答
`precision mediump float` 是什么意思?

在learningwebgl教程1中,我发现了片段着色器中一个有趣的行。precision mediump float; 我在这里找到了一篇相关文章(点击此处),但我仍然不理解它的含义。 如果我删除这行代码,什么也没有改变。一切都是一样的。 那么precision mediump float...

73得票5回答
WebGL/GLSL - ShaderToy是如何工作的?

我最近一直在逛Shadertoy(https://www.shadertoy.com/),试图学习更多关于OpenGL和GLSL的知识。 据我所了解,OpenGL用户首先必须准备好要使用的所有几何体并配置OpenGL服务器(允许的灯光数量、纹理存储等)。完成这些步骤后,用户必须提供至少一个顶...

43得票2回答
OpenGL如何进行透视正确的线性插值?

如果在线性插值在OpenGL管道的光栅化阶段发生,并且顶点已经转换为屏幕空间,那么用于透视正确插值的深度信息来自哪里? 有人可以详细描述OpenGL如何从屏幕空间基元转换为具有正确插值值的片段吗?

39得票7回答
如何获取片段的当前颜色?

我试图理解GLSL中的着色器,找到了一些有用的资源和教程,但对于应该是基础且微不足道的东西,我总是遇到了障碍:我的片段着色器如何检索当前片段的颜色? 你通过gl_FragColor = whatever来设置最终颜色,但显然那是一个输出值。你如何获取输入的原始颜色,以便进行计算?那必须在某个...

34得票1回答
Three.js中的自定义纹理着色器

我只是想创建一个非常简单的片元着色器,将指定的纹理绘制到网格上。我查看了一些完成相同任务的自定义片元着色器,并围绕它构建了自己的着色器和支持JS代码。但是,它并不起作用。这是我尝试运行的代码的工作抽象: 顶点着色器 <script id="vertexShader" type="x-...

31得票2回答
为什么在Metal中禁止从片段着色器向缓冲区写入数据?

如Metal Shading Language Guide所述: 在片段函数中,禁止向缓冲区或纹理写入。 我知道这是事实,但我很好奇为什么会这样。从片段着色器中写入缓冲区非常有用;我知道直接写入缓冲区时硬件端可能更复杂,因为不总是能预知特定线程的内存写入的最终位置,而原始缓冲区写入就不总是...

30得票1回答
GLSL ES中的统一变量与属性的区别

我有一些参数要从CPU传递到GPU,这些参数对于所有片段都是不变的,但每帧会发生改变(我正在使用GLSL ES 1.1)。那么我应该使用uniform还是attribute来处理这些值?Attribute可以在顶点之间变化,所以我的直觉告诉我,对于整个帧都是常量的值,使用attribute可能...

28得票4回答
GLSL:如何获取像素x、y、z世界位置?

我希望根据物体在世界坐标系中的xyz位置来调整它们的颜色。 我尝试在我的片元着色器中实现这个想法:varying vec4 verpos; void main(){ vec4 c; c.x = verpos.x; c.y = verpos.y; c.z = ...

26得票1回答
使用片段着色器在二维多边形上绘制边框

我有一些简单的多边形(不超过20个顶点)在一个简单的xy平面上进行平面渲染,使用GL_TRIANGLES和单色,这是一个2D模拟。 我想给这些多边形添加可变厚度和不同颜色的边框。我已经实现了一些东西,使用相同的顶点和glLineWidth / GL_LINE_LOOP,它有效,但需要另一个渲...