Questions tagged «glsl»

OpenGL着色器的编程语言。


1
如何计算切线和双切向量
我在three.js中加载了纹理,然后传递给着色器。在顶点着色器中,我计算法线,然后将uv向量保存到变量中。 <script id="vertexShader" type="x-shader/x-vertex"> varying vec3 N,P; varying vec2 UV; void main() { gl_Position= projectionMatrix * modelViewMatrix * vec4(position,1.0); P= position; N= normalMatrix * vec3(normal); UV= uv; } </script> <script id="fragmentShader" type="x-shader/x-fragment"> varying vec3 N,P; varying vec2 UV; uniform sampler2D texture; void main() { gl_FragColor= texture2D(texture,UV); } </script> 如何计算T和B向量?

2
使用两个着色器,而不是一个带IF语句的着色器
我一直在努力将相对较大的opengl ES 1.1源移植到ES 2.0。 在OpenGL ES 2.0(这意味着所有内容都使用着色器)中,我想绘制3次茶壶。 第一个具有统一的颜色(例如旧的glColor4f)。 第二个,具有每个顶点的颜色(茶壶也具有顶点颜色的数组) 第三个,具有每个顶点的纹理 也许是第四个,同时具有每个顶点的纹理和颜色。然后可能是第五名,也有法线。 据我所知,实现有两种选择。第一个方法是制作支持以上所有内容的着色器,并设置要更改其行为的均匀性(例如,使用奇异颜色均匀性或每个顶点颜色均匀性)。 第二种选择是为每种情况创建一个不同的着色器。使用一些自定义的着色器预处理,并不是那么复杂,但是要担心的是在图形对象之间切换着色器的性能成本。我读过它并不小。 我的意思是,执行此操作的最佳方法是同时进行构建和度量,但最好听取任何意见。
9 opengl-es  glsl 

1
优化重型片段着色器的性能
我需要帮助优化以下一组着色器: 顶点: precision mediump float; uniform vec2 rubyTextureSize; attribute vec4 vPosition; attribute vec2 a_TexCoordinate; varying vec2 tc; void main() { gl_Position = vPosition; tc = a_TexCoordinate; } 分段: precision mediump float; /* Uniforms - rubyTexture: texture sampler - rubyTextureSize: size of the texture before rendering */ uniform sampler2D rubyTexture; uniform …

4
可变长度循环对GPU着色器的影响
它很流行在GPU内渲染程序内容,例如在演示场景中(绘制单个四边形以填充屏幕并让GPU计算像素)。 雷行军很受欢迎: 这意味着GPU正在每个像素执行一些未知数量的循环迭代(尽管您可以将上限设为maxIterations)。 具有可变长度的循环如何影响着色器性能? 想象一下简单的光线行进伪代码: t = 0.f; while(t < maxDist) { p = rayStart + rayDir * t; d = DistanceFunc(p); t += d; if(d < epsilon) { ... emit p return; } } 各种主流GPU系列(Nvidia,ATI,PowerVR,Mali,Intel等)如何受到影响?顶点着色器,尤其是片段着色器? 如何进行优化?

3
第一次阴影贴图问题
我第一次使用着色器在OpenGL中实现了基本的阴影映射,现在遇到了一些问题。在下面,您可以看到我渲染的场景的示例: 我要进行的阴影映射的过程是,我使用“视图矩阵”从光的角度以及用于正常渲染的投影和模型矩阵将场景渲染到帧缓冲区。 在第二遍中,我将上述MVP矩阵从光的角度发送到顶点着色器,该顶点着色器将位置转换为光空间。片段着色器进行透视划分,并将位置更改为纹理坐标。 这是我的顶点着色器, #version 150 core uniform mat4 ModelViewMatrix; uniform mat3 NormalMatrix; uniform mat4 MVPMatrix; uniform mat4 lightMVP; uniform float scale; in vec3 in_Position; in vec3 in_Normal; in vec2 in_TexCoord; smooth out vec3 pass_Normal; smooth out vec3 pass_Position; smooth out vec2 TexCoord; smooth out vec4 lightspace_Position; void main(void){ pass_Normal …

3
延迟阴影-如何合并多个灯光?
我从GLSL开始,已经实现了简单的延迟着色,该着色输出带有位置,法线和反照率的G缓冲区。 我还编写了一个简单的点光源着色器。 现在,我为点光源绘制一个球体,输出进入照明缓冲区。 问题是,绘制多个灯光时如何合并灯光缓冲区的结果? 例如,当我使用点光源着色器将第二个光源绘制到光缓冲区时,如何将第一个光源添加到照明缓冲区中的第二个光源。我的意思是,您不能读取和写入相同的输出缓冲区吗?
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.