shader相关内容

为什么统一变量在 GLSL 中不起作用?

我目前正在尝试使用 LWJGL 创建一个用于后处理目的的模糊着色器,但偶然发现了一个问题. 我想改变的 Uniforms 是分辨率、半径和模糊方向(水平或垂直,所以我可以对两个方向使用一个着色器).我将输出渲染到 FrameBuffer,然后渲染到屏幕上.但不知何故,纹理只是黑色.当我使用常量值而不是uniforms 时,它完全按预期工作,所以问题一定是uniform 变量. 这是我的 ..
发布时间:2021-12-19 17:55:29 其他开发

什么是 OpenGL 中的着色器,我们需要它们做什么?

当我试图通过 www.learnopengl.com 上的 openGL wiki 和教程时,它从来没有最终可以通过直觉理解整个概念是如何工作的.有人可以用更抽象的方式向我解释它是如何工作的吗?什么是顶点着色器和片段着色器,我们用它们做什么? 解决方案 OpenGL wiki给出了一个很好的定义: 着色器是一个用户定义的程序,旨在运行在图形处理器的某个阶段. 历史课 过去 ..
发布时间:2021-12-19 17:51:14 其他开发

在片段着色器中,为什么我不能使用平面输入整数来索引 sampler2D 的统一数组?

我想指定渲染精灵数组时要使用的纹理.所以我在它们的顶点数据中放置了一个纹理索引,并将它作为一个平面值从我的顶点着色器传递到我的片段着色器,但不能像预期的那样使用它来索引采样器数组,因为编译器认为它是“非-常数".相反,我不得不求助于下面令人作呕的代码.谁能解释一下这里发生了什么? const int numTextures = 2;统一的 sampler2D 纹理 [numTextures];在 ..
发布时间:2021-12-19 17:40:06 其他开发

从深度缓冲区获取真正的 z 值

如预期的那样,从着色器中的深度缓冲区采样返回 0 到 1 之间的值.给定相机的近剪裁平面和远剪裁平面,如何计算此时的真实 z 值,即与相机的距离? 解决方案 来自 http://web.archive.org/web/20130416194336/http://olivers.posterous.com/linear-depth-in-glsl-for-real //== 后处理碎片着色 ..
发布时间:2021-12-19 17:39:13 其他开发

如何在片段着色器中使用 gl_FragCoord.z 在现代 OpenGL 中线性渲染深度?

我阅读了大量有关使用片段着色器获取深度的信息. 比如 http://www.opengl.org/discussion_boards/ubbthreads.php?ubb=showflat&Number=234519 但我仍然不知道 gl_FragCoord.z 是否是线性的. GLSL 规范说它的范围是 [0,1] 在屏幕空间中,没有提到它是否是线性的. 我认为线性 ..
发布时间:2021-12-19 17:33:51 其他开发

Unity3D,围绕盒子的边缘,立方体?

在立方体(如示例中的矩形对象)上圆角的常用方法是什么? 理想的结果看起来与这些图像非常相似. (当然,您可以从字面上使用具有仔细圆润的边缘和角落的网格,但需要多次尝试才能实现这一点.) 注意,当然对于 NON 着色器方法... 添加两个小的扁平盒子,然后简单地将新法线放在两侧的中间,即 45 度: 那将被完美地画成圆形...... 下面的 GDG 提供了一篇文章 ..
发布时间:2021-12-11 17:41:57 其他开发

我必须在 Unity 的网格中使用共享顶点吗?

我想在 Unity3D 中创建具有平面阴影外观的程序生成的景观网格. 我认为最好为每个三角形创建三个独特的顶点,并为顶点使用一个计算出的法线.构建这个网格会导致冗余的顶点位置信息.(它会影响渲染时间吗?) 无论如何...问题是我想使用着色技术,例如此网格上的环境光遮挡.我不想弄乱 Unity3D 为其着色器所期望的网格拓扑. 创建具有共享顶点的网格是否更好,添加自定义顶点属性,例 ..
发布时间:2021-12-11 17:12:59 其他开发

Unity ShaderLab 中的像素完美着色器

在 Unity 中,在编写着色器时, 着色器本身是否有可能“知道"屏幕分辨率是多少,并且着色器确实可以控制单个物理像素? 我只考虑为 2D 对象编写着色器的情况(例如用于 UI 使用,或在任何情况下使用正射相机). (当然,通常要在屏幕上显示物理像素完美的 PNG,您只需说 400 像素的 PNG,然后您安排缩放,以便着色器恰好绘制到 400 个物理像素.我我想知道是一个只绘制的 ..
发布时间:2021-12-11 17:12:16 其他开发

对象的着色器线框

我想看到一个没有对角线的对象的线框 目前,我根据顶点添加线,问题是在我有几个之后我遇到了严重的性能下降. 示例此处要么对我的 Three 版本来说太新,要么不起作用(我在那里评论过). 所以我想尝试实现一个着色器. 我尝试使用这个着色器:https://stackoverflow.com/a/31610464/4279201但它坏了零件的形状,我收到 WebGL 错误. ..
发布时间:2021-11-30 19:30:19 其他开发

VR中的着色器分析

我想创建一个这样的着色器,它接受世界坐标并创建波浪.我想分析视频并了解所需的步骤.我不是在寻找代码,我只是在寻找有关如何使用 GLSL 或 HLSL 或任何其他语言实现代码的想法. 这里提供低质量和 fps 的 GIF,以防链接断开. 这是片段着色器: #version 330 核心//来自顶点着色器的内插值在 vec2 紫外线中;在 vec3 Position_worldspace ..
发布时间:2021-11-30 17:05:16 其他开发

如何在着色器中制作波浪变形效果?

我想制作这样的波浪变形效果: 但我只能创建正常的正弦波. 这是我的片段着色器: precision mediump float;不同的 vec2 v_texCoord;统一的 sampler2D s_baseMap;vec2 正弦波(vec2 p){浮动圆周率 = 3.14159;浮动 A = 0.15;浮动 w = 10.0 * pi;浮动 t = 30.0*pi/180.0;浮动 ..
发布时间:2021-11-26 13:33:22 其他开发

OpenGL ES 着色器和 64 位 iPhone 5S

我刚刚开始在 OpenGL ES 应用程序上使用 iPhone 5S 和 64 位架构进行测试.我看到的问题是 (CGFloat) 值在到达着色器时是错误的.我传入 0.8 并在调试着色器时更改为 -1.58819e-23.我正在使用 glUniform4fv() 来传递值.我需要使用不同的数据类型吗?或传递值的不同方法?当我在 32 位上测试时,该值很好 CGFloat BrushColor[ ..
发布时间:2021-11-25 05:54:59 移动开发

3D 图形批处理

很多网站/文章都说“批量!批!批!'.有人可以解释一下“批处理"在着色器方面的含义吗? 也就是说,确实 改变纹理 更改任意着色器变量 意思是不能“批量处理"? 解决方案 总结它的最简单方法是尝试尽可能少地调用 API 来绘制您需要绘制的内容.使用顶点数组或 VBO(在现代 API 中甚至不是可选的)、纹理图集和避免状态更改的需要都有助于实现这一点.在您转身并设置下一个绘 ..
发布时间:2021-11-25 02:32:38 C/C++开发

3D 图形批处理

很多网站/文章都说“批量!批!批!'.有人可以解释一下“批处理"在着色器方面的含义吗? 也就是说,确实 改变纹理 更改任意着色器变量 意思是不能“批量处理"? 解决方案 总结它的最简单方法是尝试尽可能少地调用 API 来绘制您需要绘制的内容.使用顶点数组或 VBO(在现代 API 中甚至不是可选的)、纹理图集和避免状态更改的需要都有助于实现这一点.在您转身并设置下一个绘 ..
发布时间:2021-11-25 02:32:19 C/C++开发

使用每个三角形/面的纯色编写 GLSL 片段着色器的方法

我有顶点和三角形数据,其中包含每个三角形(面)的颜色,而不是每个顶点的颜色.即一个顶点被多个面共享,每个面可能有不同的颜色. 我应该如何在 GLSL 中解决这个问题来为每个正在渲染的 face 分配纯色?通过平均顶点的相邻多边形的颜色来计算和分配“顶点颜色"缓冲区很容易,但这当然会产生模糊的结果,其中颜色在片段着色器中被插值. 我真正需要的根本不应该是内插颜色值,一旦按预期工作,我将有 ..
发布时间:2021-11-25 02:16:20 C#

(如何)着色器可以查看当前的渲染缓冲区?

像素着色器是否有可能看到深度/颜色/模板缓冲区的当前状态? 解决方案 片段着色器未获得其正在处理的片段的当前缓冲区值.尝试通过将这些缓冲区用作纹理来读取这些值,在一般 情况下不会产生合理的结果.这是“未定义的行为". 在某些特定情况下它可以工作. 首先,您可以使用纹理障碍.这在技术上是 NVIDIA 的扩展,但 ATI 也广泛支持它.屏障基本上是缓存刷新.它允许您将当前渲染目标 ..
发布时间:2021-11-25 01:58:02 C#

不同CG/GLSL/HLSL功能的表现

有标准的着色器函数库,例如 Cg.但是是否有资源可以告诉您每个操作需要多长时间...我的想法类似于您过去能够查找每个 ASM 操作需要多少个周期. 解决方案 没有可靠资源可以告诉您各种标准着色器函数需要多长时间.甚至不是特定的硬件. 这样做的原因与指令调度和现代着色器架构的工作方式有关.以一个简单的 sin 函数为例.假设硬件有一个特殊的硬件来计算一个值的正弦值,所以它不是手动使用 ..
发布时间:2021-11-25 01:49:17 C#

如何计算像素着色器深度以将在点精灵上绘制的圆渲染为与其他对象相交的球体?

我正在编写一个着色器,通过绘制阴影圆圈来在点精灵上渲染球体,并且需要编写深度分量和颜色,以便彼此靠近的球体正确相交. 我使用的代码类似于 Johna Holwerda 编写的代码:> void PS_ShowDepth(VS_OUTPUT input, out float4 color: COLOR0,out float depth : DEPTH){float dist = length ..
发布时间:2021-11-25 01:21:38 C#

Libgdx 如何在 3D 中使用着色器

我在我的 wip 游戏中达到了一个点,我想让它更吸引眼球.目前我添加了一些 Ambientlight 和一个 Directionla-light 到 Environment 并用它渲染我的场景.但现在我想给它添加一个自定义的 Shader .所以我一直在寻找一些教程,出于某种原因,他们几乎在每个教程中都使用了另一个在游戏中使用 Shader 的“版本": 给 ModelBatch 一个 St ..
发布时间:2021-11-25 01:04:37 C#