glsl

如何优化颜色渐变着色器?

我创建了这个简单的片段着色器来实现垂直颜色渐变效果。 但我发现这对我的移动设备全屏显示很费力。 有什么办法可以优化吗? 这里是代码链接 http://glsl.heroku.com/e#13541.0 ... »

着色器程序中的照明行为异常

这是我的着色器程序: #version 330 core // Input vertex data, different for all executions of this shader. layout(location = 0) in vec3 vertexPosition_modelspace; layout(location = 1) in vec3 vertexNormal_mode... »

c++

在纹理而不是屏幕上使用着色器

我编写了一个简单的 GL 片段着色器,它对图像执行 RGB 伽玛调整: uniform sampler2D tex; uniform vec3 gamma; void main() { vec3 texel = texture2D(tex, gl_TexCoord[0].st).rgb; texel = pow(texel, gamma); gl_FragColor.r... »

我可以发送一个数据数组作为顶点属性吗?

我有一个PointCloud,我用它来可视化一些与时间相关的数据点。对于 PointCloud.Geometry 中的每个顶点,我想分配一个属性,它是一个纪元时间数组。 这些纪元时间是整数,例如:epochTimes = [1432314839, 1432314840, 1432314841]; 自定义属性如下所示: attributes = { epochTimes: { t... »

同时显示视频元素的多个帧

一些背景知识:这里的图形新手,刚刚用 mrdoob 出色的 three.js 在浏览器中涉足 3D 世界。我打算很快通过http://learningwebgl.com/ 的所有tuts :) 我想知道如何大致重新创建类似于: http://yooouuutuuube.com/v/?width=192&height=120&vm=29755443&flux=0&amp... »

GLSL布局std140填充困境

我有以下统一缓冲区: layout(std140) uniform Light { vec4 AmbientLight; vec4 LightIntensity; vec3 LightPosition; float LightAttenuation; }; 在缓冲数据和需要添加的填充时,我遇到了一些问题。我已经阅读了http://ptgmedia.p... »

c++

Sampler 2D Alpha 值保持在 1

我创建了一个纹理用于​​ 2D 采样器,作为镶嵌地形网格的置换贴图。使用传入的顶点坐标,我对后续顶点的补丁角有一个平滑的插值。当使用来自采样器的高度值时,我收到的只是一个平面。当我将该值乘以 100 时,平面的高度增加了大约 100,这让我相信 alpha 值始终是 1。 这是 GLSL 评估着色器和纹理设置。 #version 430 layout(triangles, equal_sp... »

将转换发送到顶点着色器失败

我正在使用 OpenGL 进行我的第一步,目前无法将一些转换发送到我的顶点着色器。当我使用以下着色器程序时,一切正常,我可以看到我的对象(一个简单的三角形): layout (location = 0) in vec3 aPos; void main() { gl_Position = vec4(aPos, 1.0); } 在下一步中,我更改了着色器程序以接受来自外部的转换: lay... »

如何有效地在 GLSL ES 2.0 中的许多颜色属性之间进行插值

我正在使用 OpenGL ES 2.0 进行项目。我的网格中的每个顶点都有固定数量的颜色属性(比如说 5 个)。最终的每个顶点颜色计算为两个选定颜色属性之间的插值。 在我的实现中,两种颜色的选择基于两个给定的索引。我知道if 语句可能会对性能造成很大影响,因此选择将所有属性放入一个数组并使用索引来检索想要的颜色。我仍然看到性能显着下降。 attribute vec4 a_position; /... »

OpenGL 简单着色,工件

我一直在尝试实现一个简单的灯光/阴影系统,准确地说是一个没有镜面光的简单 Phong 照明系统。它基本上可以工作,除了它有一些(在我看来)令人讨厌的工件。 我的第一个想法是,这可能是纹理 mipmap 的问题,但禁用它们不起作用。我的下一个最佳猜测是着色器问题,但我似乎找不到错误。 有没有人遇到过类似的问题或想知道如何解决这个问题? Image of the artifacts 顶点着色器... »

法线贴图大错特错

我尝试在我的 opengl 应用程序中实现法线映射,但无法正常工作。 This 是漫反射贴图(我添加了棕色),this 是法线贴图。 为了获得切线和双切线(在其他地方称为副法线?)向量,我为网格中的每个三角形运行此函数: void getTangent(const glm::vec3 &v0, const glm::vec3 &v1, const glm::vec3 &amp... »

c++

GLSL - 使用自定义输出属性而不是 gl_Position

我目前正在使用着色器 (3.3) 学习 OpenGL。有一件事我似乎无法解决。我已经读过在 OpenGL 3+ 中不推荐使用 gl_Position 和 gl_FragCoords 等内置变量,因此我想使用自己的输出变量。 所以不要这样: #version 330\n layout(location=0) in vec2 i_position; out vec4 o_position; voi... »

OpenGL ES 2.0 片段着色器算法在 iOS 上不正确

我对 GLSL 很陌生,所以请原谅这些问题的基本性质.. 首先,调用: int range[2], precision; glGetShaderPrecisionFormat(GL_FRAGMENT_SHADER, GL_HIGH_FLOAT, range, &precision); 对于我的设备,这将返回 precision = 23 和 range = {127, 127}。在... »

ios

使用 egl (opengl) 和 freetype2 在屏幕上呈现文本时不出现文本

我已经编写了在嵌入式设备上运行的应用程序,但我在显示器上看到的只是填充了我在 glViewPort 中指定的颜色的表面区域。 文字没有出现。 我有 glError 打印来查看是否某些 gl API 调用失败,但没有失败。 我也没有 FT 库错误。 尽管对于我加载的任何字符,我的打印显示 face->glyph->bitmap.width face->glyph->bitmap_left 为... »

c++

具有多个着色器程序的 OpenGL 多纹理

我正在尝试在 OpenGL 中制作一个场景来模拟来自太空的地球。我现在有两个球体,一个用于地球,另一个用于云。地球和云球对象有自己的着色器程序来保持简单。地球着色器程序需要 4 个纹理(白天、夜晚、光谱贴图和法线贴图),而云着色器程序需要 2 个纹理(云图和法线贴图)。我有一个具有渲染函数的对象类,在该函数中我使用以下逻辑: //bind the current object's texture... »

c++

三个 js - 用于后处理的基本着色器

我一直在尝试编写一个简单的着色器来添加噪声。但是我无法通过以下设置获取 uv 坐标。 片段着色器: uniform float seed; uniform sampler2D pass; varying vec2 vUv; void main (){ //noise vec2 pos = gl_FragCoord.xy; pos.x *= seed; pos... »