glsl相关内容

有没有好的GLSL散列函数?

因此,我对这个问题的古老评论仍然获得好评:What's the origin of this GLSL rand() one-liner? 这让我想到,一个好的GLSL散列函数应该是什么样子的?它有明显的用例,如柏林噪声。在一个好的实现中,我会寻找一些属性。 在不同精度(中值、高值)下稳定。这可以是可配置的。 应在ES2中可用,因此不能使用整型支持 仅ALU,无纹理 不是在寻找加 ..
发布时间:2022-09-22 15:05:52 其他开发

我可以将R8G8B8A8放在UBO中,并将其用作ve4吗?

我尝试优化工作的计算着色器。它的目的是创建一个图像:找到好的颜色(使用一个小调色板),然后调用imageStore(image, ivec2, vec4)。 颜色在统一缓冲区的uint数组中进行索引。 此UBO中的一种颜色被包装在一个Uint内,如{0-255,0-255,0-255,0-255}。 代码如下: struct Entry { *some other da ..
发布时间:2022-08-04 14:01:43 其他开发

顶点属性位置始终为4分量,这是否意味着我可以将mat2用作顶点属性而不会有任何问题??(OpenGL)

我知道顶点属性位置始终为4分量,但我不完全确定它是否也适用于mat2(和其他mat2类型)。 推荐答案 这取决于您所说的没有任何问题。 是,mat2是顶点属性的有效类型。但是,when used as attributes,所有矩阵类型都被视为矩阵列的数组。处理数组时,每个数组元素都是单独的属性。 因此mat2算作两个属性,而不是一个属性(特别是每个属性的前两个组件)。如果这对 ..
发布时间:2022-08-04 13:56:30 其他开发

GLSL的ImageLoad()总是返回0?

我已经创建了一个纹理并填充了一些数据: glBindTexture(GL_TEXTURE_2D, head_pointer_image); glTexImage2D(GL_TEXTURE_2D, 0, GL_R32UI, width, height, 0, GL_RED_INTEGER, GL_UNSIGNED_INT, data); 然后我将其绑定到0: glBindImageT ..
发布时间:2022-06-28 16:28:01 其他开发

C针对包含/依赖项调用GLSLC

我正在使用glslc将带有#include的GLSL着色器(不是核心规范IIRC的一部分,但在shaderc中受支持,这是glslc背后的引擎,随LunarG Vulkan SDK一起分发)编译成Vulkan和GL 4.5的SPIR-V。glslc发出包含依赖信息的GCC样式的desfile([my_shader].[ext].d)文件。 我的项目是用cmake/nimpa/msvc 201 ..
发布时间:2022-06-28 16:19:26 其他开发

将数据存储为纹理以在实例化几何体的顶点着色器中使用(三个JS/GLSL)

我使用的是THREE.InstancedBufferGeometry,我希望访问已编码到纹理中的顶点着色器中的数据。 我要做的是为每个实例创建一个具有一个像素的数据纹理,它将存储每个实例的位置数据(然后在稍后的阶段,我可以使用带有流场的模拟来更新纹理以设置位置的动画)。 我正在努力从顶点着色器中的纹理访问数据。 const INSTANCES_COUNT = 5000; // ..
发布时间:2022-03-24 19:29:02 其他开发

OpenGL批渲染器中的纹理出血/损坏

在C++中开发了一个引擎,并基于Cherno's video series实现了一个批处理渲染器。它在一段时间内似乎工作得很好。最近注意到,在参与该项目的两台计算机中的一台上,精灵的一种纹理奇怪地渗入另一种纹理。 经过一些研究后,我们注意到,具体而言,出血是根据它们的渲染顺序发生的。其中第一个渲染的精灵没有问题,后续的精灵大部分都是正确的,有一小部分像素来自最后绘制的精灵的纹理。 我们 ..
发布时间:2022-03-13 12:20:26 C/C++开发

将3字节数据发送到OpenGL GLSL

我正在开发一个基于Voxed的小游戏。我不打算创建“我的世界”副本,但这不是这里的重点。 使用C++OpenGL和VBO时,我无法成功地将“非标准”类型发送到我的GLSL Shader。 假设一个由3个uint8_t属性组成的结构,我尝试将此结构的数组发送到我的GLSL。但我无法获取正确的值。 我找到的最准确的东西是:WebGL - How to pass unsigned byte ..
发布时间:2022-03-11 20:08:20 C/C++开发

在SpriteKit中使用着色器绘制圆

我正在尝试使用Swift在SpriteKit中使用着色器绘制一个中心圆来填充图像。我使用此链接来了解着色器,我使用的部分如下所示: vec2 center = vec2(uResolution.x/2., uResolution.y/2.); float radius = uResolution.x/2.; vec2 position = gl_FragCoord.xy - center ..
发布时间:2022-03-11 20:02:00 移动开发

如何在OpenGL中实现无重复顶点的平面着色?

我正在尝试使用平面着色在LWJGL OpenGL中渲染3D棱镜。例如,我有一个多维数据集索引,如下所示: 我在顶点缓冲区中只有8个顶点,我如上所述对它们进行了索引。有没有办法在立方体上实现平坦的法线着色,如下图所示?如果可能,我不想重写顶点和索引缓冲区以包括重复的顶点。 推荐答案 如果不需要任何其他属性(例如纹理坐标),则可以选择仅通过8个顶点创建具有面法向矢量的立方体网格。对法 ..
发布时间:2022-03-11 19:31:08 其他开发

在片段着色器中无失真地使用OpenGL ES旋转纹理

我正在使用Android的GPUImage库来对位图应用一些效果。本质上,GPUImage接受位图并使用OpenGL ES,将1x1立方体渲染到位图大小的帧缓冲区中。用户可以编写自定义片段着色器来控制输出。 我正在尝试编写一个片段着色器,它在给定旋转角度的情况下旋转位图。以下是我到目前为止的情况: varying vec2 textureCoordinate; uniform samp ..
发布时间:2022-03-01 17:33:21 移动开发

带字节的着色器存储缓冲区对象

我正在使用一个计算着色器,其中的输出将写入SSBO。现在,此缓冲区的使用者是CUDA,它希望它包含无符号字节。我目前无法找到如何在SSB中为每个索引写入一个字节的方法。使用纹理或图像,规范化浮点到无符号字节的转换由OpenGL处理。例如,我可以附加内部格式为R8的纹理,并按条目存储字节。但是使用SSBO不可能做到这一点。是吗 实际上,我希望能够做到以下几点: 计算着色器: #ve ..
发布时间:2022-03-01 17:30:51 其他开发

着色器-通过拉动像素来防鱼眼(&QOOT;PARTING";像素)

我想修复此图像的失真: 质量问题很抱歉,但这是我能找到的最好的例子了。 我不知道是否有可能修复这种扭曲(我希望有直门和直天花板),但基本上,我不想将像素推到图像外部(红色箭头),这会增加模糊效果,我想做相反的操作(绿色箭头),将像素拉向中心。 如果你有什么想法,那就太棒了。也欢迎其他解决方案! 推荐答案 对于鱼眼效果的定义,您必须将角度(Alpha)与视口的对角线(d)相 ..
发布时间:2022-03-01 17:26:52 其他开发

在尝试转换为JS时,如何在WebGL Javascript中实现ShaderTool缓冲区?

我正在尝试将Shader玩具转换为Javascript和WebGL,以便它可以独立于ShaderTool运行。ShaderToy具有缓冲区的概念,在此示例中,它重新循环缓冲区并改善输出图像。它在BUF A选项卡上执行此操作。 https://www.shadertoy.com/view/MdyGDW 它将其输出写入绑定到iChannel0的缓冲区A,然后在每个绘制周期从相同的iChanne ..
发布时间:2022-03-01 17:24:05 其他开发

如何在质心计算光线的情况下实现平面着色?

我想编写一个GLSL着色器程序,用于逐面着色。我的第一次尝试使用flat插值限定符和触发顶点。我对法线和位置顶点属性都使用平面插值,这为我提供了所需的实心绘制曲面的老式效果。 虽然渲染看起来正确,但着色器程序实际上没有正确执行工作: 灯光计算仍以每个碎片为基础(在碎片着色器中), 位置矢量取自挑衅顶点,而不是三角形的质心(对吗?)。 是否可以对三角形的质心应用一次照明公式,然后 ..
发布时间:2022-03-01 17:20:16 其他开发

GLSL-计算曲面法线

我有一个简单的顶点着色器,是用GLSL编写的,我想知道是否有人可以帮助我计算曲面的法线。我正在‘升级’一个平面,所以现在的灯光模型看起来.真奇怪。以下是我当前的代码: varying vec4 oColor; varying vec3 oEyeNormal; varying vec4 oEyePosition; uniform float Amplitude; // Amplitu ..
发布时间:2022-03-01 17:17:18 其他开发

查找支持的GLSL版本

怎样才能找到OpenGL实现支持的GLSL版本,并且能够可靠地以编程方式使用? 是获取GL_SHADING_LANGUAGE_VERSION字符串并尝试解析它的最佳方式吗?它能可靠地以定义良好的格式返回吗?我的英特尔驱动程序返回1.20,这很容易解析,但我的nvidia卡返回4.20 NVIDIA via Cg compiler。是否可以信任它与(d+).(d+)( .*)?正则表达式匹配?Th ..
发布时间:2022-03-01 17:14:14 其他开发

gl_FragCoord的范围是多少

gl_FragCoord.xy的范围是多少?我知道gl_FragCoord是屏幕坐标,但实际范围是多少?( 0, width - 1 )还是( 1, width )?当我进行基于碎片coord的计算时,如果我做了类似gl_FragCoord.x - 5的操作,GLSL编译器会生成什么类型的错误(如果有的话)? PS:我不需要规范化。 推荐答案 gl_FragCoord坐标从0开始 ..
发布时间:2022-03-01 17:10:59 C/C++开发

GLSL中的带边框圆角矩形

您好,我正在尝试获取快速圆角矩形GLSL着色器,但我只能使用此函数(https://github.com/marklundin/glsl-sdf-primitives/blob/master/udRoundBox.glsl)对填充矩形执行此操作: float udRoundBox( vec3 p, vec3 b, float r ) { return length(max(abs(p)- ..
发布时间:2022-03-01 17:05:13 其他开发