问题标签 [glsl]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
emacs - Emacs 的 GLSL 主模式?
我找到了这个链接http://artis.imag.fr/~Xavier.Decoret/resources/glsl-mode/,但是除了它“简单”之外,没有太多关于它的描述。
理想情况下,我想要一个可以做到这一点的 CcMode 扩展,或者至少是一个可以处理自动样式并具有与 CcMode 类似的快捷方式的模式。
如果没有,任何可以帮助我自己开始编写它的好的 elisp 参考将不胜感激。
编辑:大卫的回应促使我仔细研究 glsl-mode.el,它实际上是基于 cc-mode,所以这正是我首先要寻找的。
graphics - 如何计算 glsl 中两条法线之间的角度?
如何计算 glsl 中两条法线之间的角度?我正在尝试将菲涅耳效果添加到对象的外边缘(将该效果与 phong 着色相结合),我认为角度是我唯一缺少的东西。
片段着色器:
顶点着色器:
不同的vec3
shader - HLSL 中是否有任何 GLSL 的 ftransform() 翻译?
使用 GLSL 顶点着色器时,让着色器作为固定功能管道工作的一种方法是调用:
ftransform();
功能。HLSL 的顶点着色器有类似的功能吗?
谢谢
opengl - 在 OpenGL 中,有没有办法获取着色器程序使用的所有制服和属性的列表?
我想获取着色器程序对象使用的所有制服和属性的列表。 glGetAttribLocation()
&glGetUniformLocation()
可用于将字符串映射到某个位置,但我真正想要的是字符串列表,而无需解析 glsl 代码。
注意:在 OpenGL 2.0glGetObjectParameteriv()
中被替换为glGetProgramiv()
. 枚举是GL_ACTIVE_UNIFORMS
& GL_ACTIVE_ATTRIBUTES
。
opengl - 渲染到立方体贴图
根据ARB_geometry_shader4,可以使用几何着色器将场景渲染到立方体贴图的 6 个面上,并将立方体贴图附加到帧缓冲区对象。我想用这种方式创建一个阴影贴图。但是,似乎有一个我无法解决的冲突:
- 我只能将 GL_DEPTH_COMPONENT 作为内部类型的纹理附加到 GL_DEPTH_ATTACHMENT_EXT。
- 深度纹理只能是 1D 或 2D。
- 如果我想附加一个立方体贴图,所有其他附加的纹理也必须是立方体贴图。
因此,当我想渲染到立方体贴图时,看起来我不能使用任何深度测试。或者我到底在这里想念什么?
编辑:看起来较新的 Nvidia 驱动程序 (180.48) 支持深度立方体贴图。
opengl - GLSL 版本更改日志?
有没有什么地方可以阅读 GLSL 从 1.1 到 1.2 以及从 1.2 到 1.3 所做的更改和添加?
谷歌似乎对此不知所措,我真的不想开始阅读完整的规范。
opengl - 如何将纹理索引为来自着色器的离散查找表?
我正在用 GLSL 编写着色器,我需要向它传递一定数量的信息。传递此信息的唯一实用方法是使用一维纹理。
我正在创建纹理和设置GL_TEXTURE_MIN_FILTER
,现在我GL_TEXTURE_MAG_FILTER
需要GL_NEAREST
从着色器访问纹理,以便能够准确地索引我放入其中的每个数字 3 值向量。
有什么可靠的方法可以轻松做到这一点?
我正在寻找的是一个公式,它采用数组的大小和我想要的索引,并给我 [0,1] 中的数字,它对应于我想要的纹素。
opengl - 如何渲染到立方体贴图?
我正在尝试渲染到立方体贴图,我在这里找到了说明: http ://www.opengl.org/wiki/GL_EXT_framebuffer_object#Quick_example.2C_render_to_texture_.28Cubemap.29
我按照上面的方法将立方体贴图的面绑定到 fbo,但出现错误 GL_FRAMEBUFFER_UNSUPPORTED_EXT。我想知道这是因为我的显卡不支持此功能还是我的代码中有一些错误?
我是否可以渲染到 6 个单独的 2d fbo 纹理并使用这些纹理创建一个立方体贴图?
谢谢
opengl - 在 Intel 上编译的详细 GLSL 着色器
我有一个使用 GLSL 着色器的项目。
该项目旨在不向标准输出打印任何内容,除非出现问题或您明确打开一些额外的调试输出。
当着色器编译失败时,给出的日志长度glGetProgramInfoLog
大于 0,有时当它成功时大于 0,并给出编译警告。当你有一个可以完美编译的着色器时,日志长度<1...这就是它在我的开发机器上的 NVidia 卡上的工作方式。
对于我的罪过,我还在带有英特尔集成显卡的笔记本电脑上进行了一些开发。代码运行良好,但每当我进行着色器编译时,日志包含:
“着色器已成功编译为在硬件上运行”
这很烦人,因为除了某种字符串分析之外,我现在无法决定是否应该将字符串打印出来,例如:
希望这很明显为什么不受欢迎。如果有的话,我如何判断一条消息是否值得使用 OpenGL api 打印出来?
编辑:
如果我使用glGetShaderiv(shaderobj,GL_COMPILE_STATUS,&err);
,那么我不会收到编译警告,只有错误。
opengl - GLSL中的快速排序?
我正在考虑使用 GLSL 着色器将大量处理移植到 GPU。我偶然发现的一个直接问题是,在其中一个步骤中,算法需要维护一个元素列表,对它们进行排序并取几个最大的元素(哪个数字取决于数据)。在 CPU 上,这只是使用 STL 向量和 qsort() 来完成,但在 GLSL 中我没有这样的设施。有没有办法解决这个缺陷?