239得票13回答
如何调试GLSL着色器?

我需要调试一个GLSL程序,但是我不知道如何输出中间结果。 在GLSL中是否有可能进行一些调试追踪(例如使用printf),而不使用像glslDevil这样的外部软件?

230得票14回答
GLSL中的随机/噪声函数

由于GPU驱动程序供应商通常不会在GLSL中实现noiseX,因此我正在寻找一组“图形随机化瑞士军刀”实用函数集,最好是优化为在GPU着色器内使用。我更喜欢GLSL,但任何编程语言的代码都可以,我可以自己将其翻译成GLSL。 具体来说,我期望: a) 伪随机函数- N维、均匀分布在[-1,...

208得票5回答
截至OpenGL 4.1版本,文本渲染的最新技术是什么?

已经有一些关于OpenGL文本渲染的问题,例如: 如何为GUI实现OpenGL实时文本渲染? 但大多数讨论的是使用固定功能管线渲染纹理矩形。肯定着色器必须有更好的方法。 我并不真正关心国际化,我的大部分字符串将是绘图刻度标签(日期和时间或仅数字)。但是,这些图形将按屏幕刷新率重新呈现...

161得票5回答
GLSL着色器的正确文件扩展名是什么?

我正在学习GLSL着色器,并遇到不同的文件格式。我看到有人给他们的顶点和片段着色器分别使用.vert和.frag扩展名。但我也见过.vsh和.fsh扩展名,甚至是两个着色器在一个单独的.glsl文件中。所以我想知道是否有标准的文件格式,或哪一种方式是“正确”的?

119得票5回答
这个GLSL rand()单行代码的起源是什么?

我在网络上看到一种用于着色器的伪随机数生成器,它被称为这里和那里:float rand(vec2 co){ return fract(sin(dot(co.xy ,vec2(12.9898,78.233))) * 43758.5453); } 这个函数被称为"规范化函数"或者是"我在网上找...

110得票2回答
条件语句会减慢着色器的速度吗?

我想知道着色器(顶点/片元/像素...)中的"if语句"是否会影响着色器的性能。例如: 使用这种方式是否更好:vec3 output; output = input*enable + input2*(1-enable); 使用这个替代:vec3 output; if(enable == 1)...

96得票2回答
片元着色器如何知道要使用哪个变量来设置像素的颜色?

我看到很多不同的片段着色器。#version 130 out vec4 flatColor; void main(void) { flatColor = vec4(0.0,1.0,0.0,0.5); } 他们都使用不同的变量来表示“输出颜色”(在这种情况下为flatColor)。那...

84得票4回答
将值列表传递到片段着色器

我想将一个数值列表传递到片段着色器中。它可能很长(几千个单精度浮点数)。片段着色器需要对此列表进行随机访问,并且我希望在每帧刷新CPU上的值。 我正在考虑如何完成这项任务: 作为数组类型的统一变量(“uniform float x [10];”)。但是,这里存在限制,在我的GPU上发送超...

84得票2回答
创建GLSL统一数组?

我希望自己制作着色器中的灯光,不使用OpenGL的灯光。 我想让我的着色器能够容纳可变数量的灯光。 我们能否在GLSL着色器中声明一个uniform数组? 如果可以,我们该如何设置这些uniform的值?

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

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