shader相关内容

OpenGL着色器的显式与自动属性位置绑定

在为 OpenGL 着色器程序设置属性位置时,您面临两个选择: glBindAttribLocation() 在链接之前明确定义属性位置. 或 glGetAttribLocation() 链接后​​获取自动分配的属性位置. 使用其中一个的实用程序是什么? 如果有的话,哪一个在实践中更受欢迎? 解决方案 我知道一个很好的理由更喜欢 explicit 位置定义. ..
发布时间:2022-01-09 08:45:17 其他开发

通过片段着色器将 YUV 转换为 RGB

我在将 Android 中的相机预览从 YUV 格式转换为 RGB 时遇到问题.转换的目的是应用一些效果.我尝试通过片段着色器进行转换,因为本机代码的转换速度很慢(大约 14fps).我使用的参考是 http://jyrom.tistory.com/m/post/view/id/187.我尝试将此代码移植到 Android 平台,但结果是黑绿色矩形.但是,我可以通过我得到的输出观看某种形式.你能不 ..
发布时间:2022-01-08 20:25:23 移动开发

使用着色器中的索引引用数据纹理中的纹素

我尝试使用着色器中的索引访问 DataTexture 的纹素中的值.索引[0, 1, 2, 3, 4, 5, 6... 62, 63] 是连续的,而数据纹理有高度和宽度(uTextureDimension) of 8. 经过一番研究,我写了这个函数来获取特定的索引值,并引用相应的纹素: vec2 customUV = vec2( mod(aIndex, uTextureDimension)/uT ..
发布时间:2021-12-31 18:59:23 其他开发

Threejs中的环境遮挡

我刚刚使用three.js (可以在这里看到)完成了我的第一个布料模拟从opengl到webgl的移植. 问题是它看起来有点沉闷,我想添加(我希望我从我的计算机图形类中没记错)环境遮挡,使布料在与球碰撞时很好地着色.我现在对着色器的了解非常低,因此我非常感谢有关该主题的任何有助于three.js 开发的资源(教程、书名等),因为谷歌对此一无所知. 也许有一些关于如何应用环境光遮挡的提示? ..
发布时间:2021-12-31 18:49:34 前端开发

从three.js r.58 中的置换贴图计算法线?

我在three.js r.58中使用普通着色器,我理解需要一个法线贴图.但是,我使用的是动态置换贴图,因此在这种情况下,预先计算的法线贴图不起作用. 我发现的所有光照置换贴图示例都使用平面着色或预先计算的法线贴图.是否可以根据置换的顶点动态计算法线? 编辑:我已经发布了 带有显示平面法线的置换贴图的球体演示: 这是 github 存储库的链接,其中包含说明此问题的所有示例以及我最 ..
发布时间:2021-12-31 18:46:13 其他开发

什么是顶点着色器和像素着色器?

什么是顶点着色器和像素着色器? 它们之间有什么区别?哪个最好? 解决方案 A Pixel Shader 是一个 GPU(图形处理单元)组件,可以编程为在每个像素的基础上运行,并处理照明和凹凸贴图等内容. A Vertex Shader 也是 GPU 组件,也使用特定的类似汇编语言进行编程,类似于像素着色器,但面向场景几何体,并且可以执行诸如向对象添加卡通轮廓边缘等操作. ..
发布时间:2021-12-30 18:58:59 其他开发

如何实现地面雾 GLSL 着色器

我正在尝试为我的地形渲染引擎实现地面雾着色器.该技术在这篇文章中有描述:http://www.iquilezles.org/www/articles/fog/fog.htm 这个想法是考虑从相机到片段的光线,并沿着这条光线整合雾密度函数. 这是我的着色器代码: #version 330 核心在 vec2 紫外线中;在 vec3 中;出 vec3 颜色;均匀采样器2D tex;统一的 ..
发布时间:2021-12-19 18:34:03 其他开发

检索现有着色器属性时,glGetAttribLocation 返回 -1

我正在尝试将属性传递给我的顶点着色器,但由于某种原因,它一直在第三个属性位置给我一个 -1,我要求 openGl 通过 glGetAttribLocation() 进行检索.目前它一直给我一个 -1 的 texCoord 属性,如果我切换 texAttrib 和 colAttrib(切换代码中的行),它会给我一个 -1 的颜色属性而不是纹理,我不知道为什么?由于 -1 被传递给 glVertexA ..
发布时间:2021-12-19 18:27:58 C/C++开发

着色器位置 vec4 或 vec3

我已经阅读了一些关于 GLSL 的教程.在某些位置属性是某些 vec3 中的 vec4.我知道矩阵运算需要一个 vec4,但是否值得发送一个额外的元素?发送 vec3 然后在着色器 vec4(position, 1.0) 中投射不是更好吗?内存中的数据更少 - 会更快吗?或者我们应该打包一个额外的元素来避免强制转换? 有什么建议应该更好吗? layout(location = 0) 在 v ..
发布时间:2021-12-19 18:26:13 其他开发

将GPU计算的结果返回给OpenGL中的CPU程序

有没有办法将在 GPU 上运行的着色器的结果返回给在 CPU 上运行的程序? 我想根据 GPU 上的计算成本高的算法从简单的体素数据生成多边形网格,但我需要 CPU 上的结果进行物理计算. 解决方案 定义“结果"? 一般来说,如果您使用 OpenGL 进行 GPGPU 风格的计算,您将需要围绕渲染系统的需求构建着色器.渲染系统设计为单向:数据进入其中并生成图像.反过来说,让渲染 ..
发布时间:2021-12-19 18:23:42 其他开发

使用着色器在 opengl 中绘制深度值

我想在片段着色器中绘制深度缓冲区,我这样做: 顶点着色器: 不同的vec4位置_;gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;position_ = gl_ModelViewProjectionMatrix * gl_Vertex; 片段着色器: float depth = ((position_.z/position_ ..
发布时间:2021-12-19 18:21:16 其他开发

GLSL 着色器的正确文件扩展名是什么?

我正在学习 glsl 着色,并且遇到了不同的文件格式.我见过有人给他们的顶点和片段着色器 .vert 和 .frag 扩展.但我也看到了 .vsh 和 .fsh 扩展,甚至两个着色器都在一个 .glsl 文件中.所以我想知道是否有标准的文件格式,或者哪种方式是“正确的"? 解决方案 Khronos 创建的 glslang 编译器基于扩展对着色器阶段做出了假设,但除此之外并没有标准扩展(而且 ..
发布时间:2021-12-19 18:18:46 其他开发

通过 RDP 使用 OpenGL 着色器时使用哪种显卡?

我正在使用 Surface Pro 参加 OpenGL 开发入门课程,并希望通过本机 Windows 远程桌面工具连接到我更强大的桌面进行开发.我的第一个测试程序中的着色器有问题,这导致了我的问题.着色器工作将由我的 Surface(RDP 客户端)还是我的桌面(RDP 主机)上的显卡完成? 解决方案 这取决于远程系统的配置.您通常使用标准驱动程序的消费级 GPU 不会为 RDP 提供任何 ..
发布时间:2021-12-19 18:17:41 其他开发

OpenGL 忽略四边形并使它们成为三角形

这是我第二次制作游戏引擎,但我现在有点卡住了,因为我无法弄清楚为什么会发生这种情况,无论我发送什么对象,OpenGL 都只会在其上绘制一个白色三角形屏幕中央,像这样. 我什至从渲染器和相机对象上的上一个引擎中复制了我的旧代码,其行为仍然相同,所以我猜它与渲染脚本有关. 渲染器: Renderer2D::Renderer2D(const Shader& shader) {this->s ..
发布时间:2021-12-19 18:17:23 C/C++开发

OpenGL 着色器无法编译

我的 OpenGL 项目中的着色器无法编译.我有 Ubuntu 16.04 LTS,使用 CLion.没有找到任何解决方案,所以在这里提问. 这是我的错误列表: 注意:选项 force_s3tc_enable 的默认值被环境覆盖.ERROR::SHADER::VERTEX::COMPILATION_FAILED0:1(1): 错误:语法错误,意外的 $end错误::着色器::片段:: CO ..
发布时间:2021-12-19 18:16:47 C/C++开发

GLSL gl_FragCoord.z 计算和设置 gl_FragDepth

所以,我有一个冒名顶替者(真正的几何体是一个立方体,可能被剪掉了,冒名顶替者的几何体是一个 Menger 海绵),我需要计算它的深度. 我可以很容易地计算在世界空间中的偏移量.不幸的是,我花了好几个小时都没能用它来扰乱深度. 我唯一能得到的正确结果是我去的时候: gl_FragDepth = gl_FragCoord.z 基本上,我需要知道 gl_FragCoord.z 是如何计算 ..
发布时间:2021-12-19 18:07:17 其他开发

为什么我的 OpenGL Phong 着色器表现得像平面着色器?

过去几周我一直在学习 OpenGL,但在实现 Phong 着色器时遇到了一些麻烦.尽管我使用了 smooth 限定符,但它似乎没有在顶点之间进行插值.我在这里错过了什么吗?为了在信用到期时给予信用,顶点和片段着色器的代码大量来自 OpenGL SuperBible 第五版.我强烈推荐这本书! 顶点着色器: #version 330在 vec4 vVertex 中;在 vec3 vNorma ..
发布时间:2021-12-19 18:06:08 其他开发