Questions tagged «glsl»

OpenGL着色器的编程语言。


4
使用多个着色器
我目前正在研究opengl着色器,但无法弄清楚:如何将不同的着色器应用于对象,例如,使用卡通着色器渲染的茶壶,以及在同一场景中使用非常反射的表面绘制的茶壶,以及其他因扭曲而变形的对象杂讯功能,例如这部影片 http://www.youtube.com/watch?v=1ogg4ZfdBqU 另一个是在场景中应用Bloom Bloom着色器,然后再应用运动模糊着色器。当您只有一个顶点着色器和一个片段着色器时,如何实现这些效果?是否有诸如使用多个着色器程序之类的技巧?
53 shaders  glsl 

1
Raymarch着色器如何工作?
我一直在看这里的shaderoy.com中的着色器,大多数很酷的着色器都有共同的噪点和raymarch。我完全不了解源代码,但我确实想要。这些着色器如何工作,raymarch算法如何工作?我到处搜索,找不到关于该主题的任何内容。 谢谢

1
GLSL中的in /​​ out关键字
我不太了解如何在GLSL中使用in/ out关键字,并且google在特性上毫无帮助。 他们到底是做什么的?例如,如果要将每个顶点的变化变量集传递给片段着色器,我将如何使用它们? 从字面上看,我发现每个教程都使用varying/ attribute关键字,但这没有帮助。
46 opengl  glsl 

2
如何渲染逼真的冰?
我试图在Unity中编写一个看起来很好并且至少是半现实的冰着色器。 如果以下快照(在Google上找到)是CG,其着色器将包括哪些内容?(前景洞穴)。我可能是错的,但看起来它甚至具有与默认漫反射不同的照明模型。

1
如何减少轮廓发光效果中的锯齿?
我正在尝试在《 Left 4 Dead》游戏中复制发光的轮廓效果。即使对象被遮挡,该效果也会使对象轮廓发光。这是效果的屏幕截图: 我可以在基于OpenGL的程序中复制这种效果。这是我目前正在做的: 创建颜色和深度纹理,其大小是屏幕尺寸的一半,用于渲染发光的对象 清除发光颜色/深度纹理。颜色清除为黑色。 对于每个发光对象,将其渲染为单色的发光纹理 对发光纹理执行可分离的高斯模糊 正常渲染全分辨率场景 将辉光纹理与正常场景相加,但是使用辉光深度纹理可以遮盖对象,仅留下模糊的轮廓。 这是我的方法的屏幕截图: 这是将发光纹理与场景结合在一起的片段着色器: uniform sampler2D glowColorTex; uniform sampler2D glowDepthTex; uniform sampler2D sceneColorTex; void main() { vec2 uv = gl_TexCoord[0].st; vec4 color = texture2D( sceneColorTex, uv); float depth = texture2D( glowDepthTex, uv).r; if(depth == 1.0) { color += 2.0 * texture2D( …
42 opengl  shaders  glsl  glow 

5
游戏中的演员应该负责吸引自己吗?
我对游戏开发非常陌生,但对编程却不是。 我(再次)使用JavaScript的canvas元素在玩Pong类型的游戏。 我创建了一个Paddle具有以下属性的对象... width height x y colour 我也有一个Pong具有诸如...的属性的对象 width height backgroundColour draw()。 该draw()方法当前正在重置canvas,这就是出现问题的地方。 如果Paddle对象具有draw()负责其绘制的方法,或者draw()该Pong对象的负责负责其演员的绘制(我认为这是正确的术语,如果我不正确,请更正我)。 我发现在Paddle实例化两个对象Player和时,绘制自身会很有利Enemy。如果在没有Pong的draw(),我需要两次写类似的代码。 最佳做法是什么? 谢谢。

1
GLSL:如何将浮点数转换为int?
在GLSL片段着色器中,我试图将A投射float为int。编译器会引发错误: ERROR: 0:60: '=' : cannot convert from 'mediump float' to 'highp int' 我试图提高的精度int: mediump float indexf = floor(2.0 * mixer); highp int index = indexf; 但无济于事。 如何int正确投放?
40 opengl  glsl  opengl-es 

3
==是否会导致GLSL中的分支?
试图找出导致分支的原因以及在GLSL中没有导致分支的原因。 我在着色器中经常这样做: float(a==b) 我用它来模拟if语句,没有条件分支...但是有效吗?我现在程序中的任何地方都没有if语句,也没有任何循环。 编辑:为了澄清,我在我的代码中做了这样的事情: float isTint = float((renderflags & GK_TINT) > uint(0)); // 1 if true, 0 if false float isNotTint = 1-isTint;//swaps with the other value float isDarken = float((renderflags & GK_DARKEN) > uint(0)); float isNotDarken = 1-isDarken; float isAverage = float((renderflags & GK_AVERAGE) > uint(0)); float isNotAverage …
27 glsl 

4
为什么可编程管线(GLSL)比固定管线更快?
因此,我正在自学GLSL,并试图弄清为什么它比固定功能管道更快。 我遇到问题的原因是,据我了解,您创建的着色器正在替换之前存在的管道部分。那么,如何简单地提供自己的版本来加快速度呢? 我唯一能想到的是,如果您以前尝试提供自己的照明方程式,则必须在CPU上进行计算,但是现在您可以在GPU上进行计算,这会更快。 我理解正确吗?
27 opengl  glsl 

1
为什么此几何着色器会使我的程序减慢这么多?
我有一个OpenGL程序,正在渲染一个地形网格物体。我将顶点放置在顶点缓冲区中,但还没有在片段着色器中真正着色它们。我一次添加了一个几何着色器。 在添加几何体着色器之前,当我仅对流水线的片段和顶点着色步骤进行编程时,我获得的帧率约为30+。足够使我看不到任何断断续续的情况。添加几何体着色器后,我每秒获得大约5帧。为什么?这是整个几何着色器: #version 420 layout (triangles) in; layout (triangle_strip, max_vertices = 3) out; void main() { for (int i = 0; i < gl_in.length(); i++) { gl_Position = gl_in[i].gl_Position; EmitVertex(); } EndPrimitive(); } 这不是OpenGL在没有几何着色器的情况下所做的吗?
27 opengl  glsl 

3
团队如何防止覆盖源文件中的工作?[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使它成为Game Development Stack Exchange 的主题。 4年前关闭。 在我看来,有一种可能性,例如由多个人同时处理游戏引擎时,如何防止覆盖? 假设开发者一在工作,Audio.cpp而开发者二也在工作Audio.cpp,这在大型团队中通常如何进行管理以应对覆盖?(换句话说,要阻止开发人员2打开文件,直到开发人员1完成)
26 project-management  version-control  teamwork  java  2d  collision-detection  vector  collision-resolution  unity  directx  directx11  directx10  xna  ios  monogame  windows-phone-8  xamarin  design-patterns  oop  xna  collision-detection  collision-resolution  bounding-boxes  rotation  collision-detection  mathematics  javascript  algorithm  separating-axis-theorem  xna  2d  monogame  image  xna  directx  graphics  performance  opengl  2d  3d  c++  directx11  unity  c#  scale  c#  xna  collision-detection  collision-resolution  leaderboards  scoring  glsl  srgb  tilemap  three.js  tiled  unity  physics  xml  dialog-tree  xna  c#  .net  opengl  lwjgl  vbo  physics  graphics  procedural-generation  simulations  water  opengl  java  textures  lwjgl  frame-buffer  unity  unity  2d  collision-detection  collision-resolution  trigonometry  java  android  libgdx  xna  c#  frame-rate  c++  unreal-4  procedural-generation  java  graphics  lwjgl  slick  c++  software-engineering 

2
GLSL-一遍高斯模糊
可以实现片段着色器进行一次高斯模糊吗?我发现很多两遍模糊(高斯和盒子模糊)的实现: http://callumhay.blogspot.com/2010/09/gaussian-blur-shader-glsl.html http://www.gamerendering.com/2008/10/11/gaussian-blur-filter-shader/ http://www.geeks3d.com/20100909/shader-library-gaussian-blur-post-processing-filter-in-glsl/ 等等。 我一直在考虑将高斯模糊实现为卷积(实际上是卷积,上面的示例只是近似): http://en.wikipedia.org/wiki/Gaussian_blur

1
Phong照明-镜面照明有些奇怪
我实施了Phong照明。一切似乎都可以正常工作-圆环和球体都按预期方式进行了照明,等等。但是我注意到定向光的镜面照明有些奇怪。 这是两个屏幕截图。 第一: 第二: 如您所见,当相机远离物体时,更多区域具有镜面照明。 以下是简化的顶点着色器: #version 330 core layout(location = 0) in vec3 vertexPos; layout(location = 1) in vec3 vertexNorm; layout(location = 2) in vec2 vertexUV; uniform mat4 MVP; uniform mat4 M; out vec2 fragmentUV; out vec3 fragmentNormal; out vec3 fragmentPos; void main() { fragmentUV = vertexUV; fragmentNormal = …

1
GLSL光线(衰减,颜色和强度)公式
我正在Voxel引擎中实现点光源,我真的在努力获得良好的光流,从光源附近的100%到光半径的0%。 我对该函数有5个参数: 浅色(Vec3) 光强度(距光的距离,直到衰减为100%的距离) 光线到碎片的距离 从片段法线到光的角度 灯的位置 谁能按正确的方向推动我创建用于计算片段颜色的函数? 我的其中一项实验的图片: 编辑(字节请求当前代码)请注意,这只是我这边的一些实验代码。我从一个网站上获得了一个float att,它虽然可以正常工作,但远非完美。: void main() { // Light color vec3 torchColor = vec3(1.0f, 1.0f, 1.0f); float lightAdd = 0.0f; for (int i=0; i<5; i++) { vec3 pos = lights[i]; if (pos.x == 0.0f) continue; float dist = distance(vertex_pos, pos); if (dist < …
17 opengl  glsl  lwjgl  lighting  pixel 

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.