Questions tagged «glsl»

OpenGL着色器的编程语言。

2
OpenGL中的延迟平铺阴影,平铺视锥面计算
我正在尝试使用计算着色器在OpenGL中进行延迟的平铺着色,但是在尝试为每个平铺创建平截头体时遇到了障碍。我正在使用AMD的Forward +演示(用D3D编写)作为指导,但是当不应该使用时,灯光似乎被剔除了。 更新 阅读下面的更新。 这是我的(完整)计算着色器: #version 430 core #define MAX_LIGHTS 1024 #define MAX_LIGHTS_PER_TILE 40 #define WORK_GROUP_SIZE 16 struct PointLight { vec3 position; float radius; vec3 color; float intensity; }; layout (binding = 0, rgba32f) uniform writeonly image2D outTexture; layout (binding = 1, rgba32f) uniform readonly image2D normalDepth; layout (binding = …

1
GLSL中的相对论着色器
我正在尝试实现一个GLSL着色器,该着色器有助于理解相对论的洛伦兹变换。 让我们拿两个与轴对齐的惯性观测器 O和O'。观察者O'处于运动中,观察者O具有速度v=(v_x,0,0)。 用O'坐标描述时,事件P' = (x',y',z',ct')已转换坐标(x,y,z,ct)= L (x',y',z',ct') 其中L是一个称为Lorentz变换的4x4矩阵,它可以帮助我们将事件P'的O坐标写入坐标中。 (有关详细信息,请参见http://en.wikipedia.org/wiki/Lorentz_transformation#Boost_in_the_x方向) 我已经写下了第一个初步的顶点着色器,该着色器在给定每个顶点速度的情况下应用了Lorentz变换,但是我无法使变换正常工作。 vec3 beta= vec3(0.5,0.0,0.0); float b2 = (beta.x*beta.x + beta.y*beta.y + beta.z*beta.z )+1E-12; float g=1.0/(sqrt(abs(1.0-b2))+1E-12); // Lorentz factor (boost) float q=(g-1.0)/b2; //http://en.wikipedia.org/wiki/Lorentz_transformation#Matrix_forms vec3 tmpVertex = (gl_ModelViewMatrix*gl_Vertex).xyz; float w = gl_Vertex.w; mat4 lorentzTransformation = mat4( 1.0+beta.x*beta.x*q , beta.x*beta.y*q , beta.x*beta.z*q , …

3
是纯OpenGL还是GLSL?[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使它成为Game Development Stack Exchange 的主题。 6年前关闭。 我对研究图形编程很感兴趣,因此显而易见的切入点是学习OpenGL。但是,在论坛和站点周围收集分散的信息时,似乎似乎已经淘汰了纯OpenGL实现,因为3.0版之前的大多数内容已被弃用,并引用了Amazon的评论,“自3.0版以来,所有内容均与着色器有关”。在我所见过的书中,看起来只有上篇涵盖了较新的版本,而部分原因是因为书中很大一部分讲授了过时的功能,并且有专门针对GLSL的书。 这是我遇到的第一个问题,某些硬件不支持GLSL,包括我计划使用的具有英特尔集成显卡的笔记本电脑。功能 GLuint vertShader = glCreateShader(GL_VERTEX_SHADER); 导致分段错误,从它的外观看,我的驱动程序不支持着色器 所以我的问题是,仅在OpenGL中制作游戏的可行性是什么?着色器语言会缺少不可替代的良好功能吗?我期望什么样的硬件(旧的i3,i5,i7,旧的VGA)可以正确运行带有着色器的游戏?
11 opengl  glsl 

1
如何在Android中可靠地实现GPU外观?
我正在尝试让角色皮肤在Android上正常工作。 这个想法很原始:我有我的蒙皮矩阵,并且与每个顶点一起,我最多发送四个矩阵索引和四个相应的权重。我将它们汇总到顶点着色器中,并将其应用于每个顶点。 这就是我在游戏的iOS版本中的顶点着色器中所做的事情(不要介意法线): attribute vec4 in_pos; attribute vec4 in_normal; attribute vec2 in_texture_coords; attribute vec4 in_bone_index; attribute vec4 in_bone_weight; varying vec2 fs_texture_coords; uniform mat4 world_view_projection; uniform mat4 bones[@bind_matrix_count]; void main() { // Skinning vec4 transformed_pos = ((in_pos * bones[int(in_bone_index.x)]) * in_bone_weight.x) + ((in_pos * bones[int(in_bone_index.y)]) * in_bone_weight.y) + ((in_pos * bones[int(in_bone_index.z)]) …

2
如何为动态世界实现符号距离场射线行进?
我想我了解“签名距离场射线行进”的基本知识。您使用一堆距离场(例如:http : //iquilezles.org/www/articles/distfunctions/distfunctions.htm)为场景建模,然后对于投射射线的每个像素,从射线的起点开始,找到到该点最近的物体的距离,然后将该点增加最近的距离,直到您碰到东西。我设法制作了一个简单的渲染器,这是该技术的大多数描述都停止的地方。 这使我对如何在实际场景中使用SDF Ray Marching提出了一些疑问: 问题1:在真实游戏中,场景通常很复杂,并加载到CPU上,并带有许多动态对象。我了解基本的遮挡剔除(例如八叉树),并且通过多边形渲染,可以在视锥中创建要渲染的项目列表(在CPU上)。 因此,想象一下我有一个非常复杂的场景,其中许多字符和动态对象在屏幕上移动,并由CPU控制。如何将每帧要渲染的对象流式传输到GPU?每个示例都将场景硬编码为GLSL。有人可以分享动态传输到着色器的级别的示例吗? 问题2:物体如何具有多种颜色?distance函数仅返回一个距离,但是实现通常如何将颜色传回?(例如,您击中了一个红色的球体,而不是一个蓝色的立方体。)如果这是一个CPU实现,那么在终止光线行进器时,我可以在distance函数内部调用一个global函数,这也可以传递被击中对象的纹理/颜色。但是,如何在GLSL中返回商品的颜色或纹理? 谢谢。

2
折射玻璃着色器
我有一个无限的六边形地板,是通过在镶嵌细分着色器对中镶嵌点网格生成的: 请注意,这是一个扁平的线框-“阴影”是一种照明技巧: 现在,我想使它看起来像是厚的折射玻璃,但是不确定如何进行。 我想到的第一件事是 设置包含所请求的“厚度”块的制服 在计算光照时,请使用斯涅尔定律来计算光线穿过十六进制块的光程长度(如果实际上与“厚度”制服说的一样厚),并求和该长度上的alpha。这样可以提高透明度,但不能处理内部反射/ TIR等问题。 我还没有尝试过,所以我不确定视觉效果如何。 最终,对于这个特定级别,我试图在光盘战役中使用《 Tron:Legacy》中使用的六角形玻璃地板外观。(有关示例,请参见此图像。) 有什么建议吗?
10 shaders  glsl 

2
渲染之前对对象进行排序
我正在尝试实现一个场景图,在我遇到的所有文章中都谈到了对象排序。因此,您可以按“材料”对对象进行排序。现在直到我坐下来并开始执行它,我都认为这是理所当然的,因为它是有道理的。但是现在我想知道排序实际上会发生什么变化? 在我的引擎中,我有一个UBO经理,我使用UBO来存储将在程序之间共享的数据,目前仅涉及时间,相机和投影矩阵以及灯光(我不担心管理哪些灯光会影响哪些对象是ATM)。 现在,对于每个模型,我都必须将模型更改为世界矩阵统一模型,而没有排序方法可以改变它。那么,从更改此矩阵到同时为每个对象设置不好的材质的跳转又是不是? 我隐约记得在某处阅读过,每次您更改管道中的某些内容时,都必须将其刷新,这可能会导致性能问题。但是无论如何,对于每个绘图调用,我都会为世界矩阵建立一个模型,因此对这个问题有什么意义呢? 顺便说一句,关于更改制服并调用glBufferSubData是否更(或更少)昂贵,有任何信息。

2
跨多个着色器共享功能
简单的问题: 在GLSL中,有没有一种方法可以在多个着色器之间共享功能,或者我是否必须在每个需要它们的着色器中定义所有功能?
10 glsl 


1
gl_TexCoord [0]的组件是什么意思?
gl_TexCoord[0].s, gl_TexCoord[0].t gl_TexCoord[0].p和之间有什么区别gl_TexCoord[0].x, gl_TexCoord[0].y gl_TexCoord[0].z? 我了解gl_TexCoord[0].x, gl_TexCoord[0].y gl_TexCoord[0].z像素坐标吗? 但是什么gl_TexCoord[0].s, gl_TexCoord[0].t gl_TexCoord[0].p意思,我必须在哪里使用它们?

6
OpenGL ES 2.0:质量明暗器存储库[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 4年前关闭。 请问一个高品质的OpenGL(OpenGL ES 2.0)顶点和片段着色器存储库,请问一下。 我正在寻找基于像素的着色着色器(例如phong)和simmilar。很高兴看到它们更多,能够在质量与着色器性能之间进行选择。

1
如何反转背景像素的颜色
我正在使用Java和jMonkeyEngine编写游戏和地图编辑器。在地图编辑器中,我已通过线框球体完成了笔刷。我的问题是:我想使它在任何地方都可见,因此我想反转此笔刷“后面”的像素的颜色。我想用片段着色器(GLSL)来做,但是我不知道如何获得该像素的颜色。

2
更新着色器制服的最佳方法是什么?
使着色器矩阵保持最新状态的最常用方法是什么?为什么? 例如,目前我有一个Shader类,用于存储GLSL着色器程序和统一体的句柄。每次移动摄像机时,我都必须将新的视图矩阵传递给着色器,然后我必须将每个不同的世界对象的模型矩阵传递给着色器。 这严重限制了我,因为如果不访问该着色器对象就无法执行任何操作。 我想到创建一个ShaderManager负责容纳所有活动着色器的单例类。然后,我可以从任何地方访问该对象,世界对象不必知道什么着色器处于活动状态,只需要ShaderManager知道所需的矩阵即可,但是我不确定这是最好的方法,并且可能存在一些问题将采取这种方法。
10 opengl  shaders  glsl 

1
如何渲染2D自上而下的平铺定向水流?
我正在开发受矮人要塞启发的自上而下的基于图块的相当图形化2D游戏。我现在要在游戏世界中实现一条河流,该河流覆盖许多图块,并且我已经计算出每个图块的流向,如下图所示(每个图块中的红线所示)。 作为图形样式的参考,这是我的游戏当前的外观: 我需要的是一种使每块河砖中的水动画化的技术,以使水流融合到周围的砖中,从而使砖的边缘不明显。 我发现的最接近的示例在http://www.rug.nl/society-business/centre-for-information-technology/research/hpcv/publications/watershader/中进行了描述,但我不太了解在能够理解其中发生了什么时?我对着色器编程有足够的了解,可以实现自己的动态照明,但是我无法完全理解链接文章中采用的方法。 有人可以解释如何达到上述效果,还是建议另一种方法来获得我想要的结果?我认为上述解决方案的一部分是将图块重叠(尽管我不确定哪种组合),并旋转用于变形的法线贴图(再次不知道具体细节),而过去我有点迷失了,谢谢任何帮助!

5
为什么在Vector3s中不能使用运算符'> ='?
我正在尝试获得一个矩形,以便在我称为_positionA和的两个位置之间移动_positionB。两者都是类型Vector3。矩形移动得很好。但是,到达时_positionB它不会像应该的那样朝相反的方向移动。 我回到代码中看一看。我得出的结论是,随着对象的移动,if代码中的语句错过了rects位置等于的框架_positionB。如果rects的位置大于或等于, 我决定将代码修改为反向_positionB。我的代码不太长,因此我将在下面显示它: using UnityEngine; using System.Collections; public class Rectangle : MonoBehaviour { private Vector3 _positionA = new Vector3(-0.97f, -4.28f); //Start position private Vector3 _positionB = new Vector3(11.87f, -4.28f); //End position private Transform _rect_tfm; private bool _atPosA = false, _atPosB = false; public Vector2 speed = new Vector2(1f, 0f); private …
9 unity  c#  vector  mathematics  vector  matrix  unity  c#  transformation  java  3d  terrain-rendering  shading  ios  opengl-es  opengl  rendering  optimization  python  scripting  minecraft-modding  modding  pc  3d-meshes  mesh  culling  point-cloud  networking  interpolation  mathematics  game-design  ai  game-mechanics  animation  unreal-4  skeletal-animation  3dsmax  unity  c#  3d  opengl  c++  textures  unity  ide  cocos2d  cocos2d-x-js  unity  c#  mono  il2cpp  c++  game-loop  timer  linux  flash  actionscript-3  java  glsl  c++  vector  entity-component  c++  directx11  windows  visual-studio  libgdx  mouse  unity  c#  architecture  storage  unity  c#  rotation  coordinates  quaternion  vrpn  movement  vector  unreal-4  unity  shaders  unity  gui  text  bug  shooter  3d  animation  rendering  voxels  c++  mmo  multithreading  linux  textures  procedural-generation  terrain-rendering  multiplayer  mmo  game-state  java  android  libgdx  opengl  procedural-generation  unity  gui  3d  animation  tools  geometry-shader  mobile  advertisements  unity  c#  animation  scripting  unity  animation  unityscript  coroutines  unity  shaders  lighting  camera 

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.