shader相关内容

深度作为 GLSL 中相机平面的距离

我有一对 GLSL 着色器,可以为我提供场景中对象的深度图.我现在得到的是每个像素到相机的距离.我需要的是获得从像素到相机平面的距离.让我用一个小图来说明 * |--*/|/|C-----* C-----*\ |\ |* |--* 3 个星号是像素,C 是相机.星号的线是“深度".在第一种情况下,我得到了从像素到相机的距离.第二,我希望得到每个像素到平面的距离. 一定有办法通过使用一些 ..
发布时间:2021-11-25 00:53:25 C#

如何将剪切面渲染为实体对象

在 Three.js 中,我有一个 3d 对象,我在其中使用本地剪裁平面仅渲染对象的一部分. 然而,由于 3d 对象是“空心的"(意味着只渲染外表面),当我们从该表面剪下任何东西时,我们可以“看到"对象.这是我的意思的一个例子,从立方体上剪下一个角.注意我们如何看到对角的背面. 我想让物体看起来是实心的.基于这个问题,似乎实现这一点的最佳方法是创建剪切区域上方的表面,从而覆盖孔并使对象 ..
发布时间:2021-11-25 00:43:54 前端开发

如何计算切线和副法线?

在 OpenGL 着色语言 (GLSL) 中谈论凹凸贴图、镜面高光和这些东西 我有: 一组顶点(例如 {0.2,0.5,0.1, 0.2,0.4,0.5, ...}) 法线数组(例如 {0.0,0.0,1.0, 0.0,1.0,0.0, ...}) 点光源在世界空间中的位置(例如 {0.0,1.0,-5.0}) 观看者在世界空间中的位置(例如 {0.0,0.0,0.0})(假设观 ..
发布时间:2021-11-25 00:36:36 C#

Unity - 2D 着色器/照明,如 Terraria 或 Starbound

我有一张包含很多精灵的地图.我可以使用漫反射着色为精灵添加材质,而不是添加大量灯光.但这不会给我想要的结果.而且性能很重. 示例 在第一张图片中,您可以看到光是由手电筒产生的.它通过“开放空间"以最佳方式扩展其光线,并且很快被方块挡住. 这是顶层的一个很好的例子.我们可以看到某种二维定向光吗?请注意,屋内的照明再次由手电筒产生.右侧的洞穴展示了如何处理光线的更好示例.另外,请注意 ..
发布时间:2021-11-24 21:55:05 C#/.NET

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

我想制作这样的波浪变形效果: 但我只能创建正常的正弦波. 这是我的片段着色器: 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-24 21:23:05 C#

创建一个 GLSL 制服数组?

我想放弃 OpenGL 的灯光并制作我自己的灯光.我希望我的着色器允许使用可变数量的灯光. 我们可以在 GLSL 着色器中声明一个统一的数组吗?如果是这样,我们将如何设置这些制服的值? 解决方案 是的,这是可能的.您声明的统一数组类似于您在 C 中的做法,例如 uniform float v[10]; 然后您可以使用 glUniform{1,2,3,4}{f,i}v 设置它们的 ..
发布时间:2021-11-18 03:18:15 其他开发

如何使用 SCNTechnique 创建一个“蒙面"SceneKit/ARKit 中的门户效果?

我正在思考如何将 SCNTechnique 与 Scenekit 结合使用. 通过向两种材质添加自定义着色器,可以在 Unity 中轻松实现我尝试创建的效果,使具有“过滤"着色器的对象仅在通过另一个着色器(门户)看到时才可见.我已经按照本教程在 Unity 中创建了这个:https://www.youtube.com/看?v=b9xUO0zHNXw 我正在尝试在 SceneKit 中实 ..
发布时间:2021-11-17 21:27:57 移动开发

GLSL 多着色器程序 VS 制服切换

我正在研究着色器管理器架构,我有几个问题要问更高级的人.我目前的选择反对以下两种设计: 1.每个材质着色器程序 => 为程序中使用的每种材质创建一个着色器程序. 潜在的缺点: 考虑到每个对象可能都有自己的材质,它涉及到大量的 glUseProgram 调用. 暗示创建了许多着色器程序对象. 比 #2 更复杂的架构. 优点: 可以为材质中使用的每个“选项"专门生成 ..
发布时间:2021-11-17 01:58:08 其他开发

glUseProgram(0) 有什么作用?

glUseProgram 的 OpenGL 文档a> 声称使用 零 参数调用它会导致着色器执行的结果 undefined. 然而,经过一些搜索,我看到了一些使用 glUseProgram 来卸载当前着色器程序的例子. 这种行为可靠吗?如果不是,那么 glUseProgram(0) 到底做了什么? 解决方案 glUseProgram 表示给定的程序对象是将用于使用程序的事物的当前 ..
发布时间:2021-11-15 01:53:47 其他开发

如何隔离和重新着色特定的颜色范围?

给定包含嘴唇和其他“噪声"的区域的图像(牙齿,皮肤),我们如何仅隔离和重新着色嘴唇(模拟“口红"效果)?附上一张描述嘴唇/嘴巴状态的照片. 到目前为止我们所尝试的是一个由三部分组成的过程: 使用嘴唇上的稳定点对嘴唇进行颜色匹配(由内部 API 提供). 使用此颜色作为唇部隔离的基色. 重新着色嘴唇(口红行为) 在将它们转换为 CIE 色彩空间后,我们尝试了几种算法,如色调差异 ..
发布时间:2021-10-26 18:43:57 其他开发

如何在 WebGL 中创建合适的圆角矩形?

我试图实现 这个问题 的答案,但似乎有有点问题.如果您打开他们的 ShaderToys 并尝试更改边框半径,则圆角矩形的大小(宽度和高度)也会发生变化. 我正在寻找一种解决方案,例如 this shadertoy,其中更改边框半径不会't 改变形状的大小.不幸的是,在这个着色器玩具中,它是一个填充的圆角矩形. 是否有可能有一个未填充的圆角矩形(因此,只有边框),但也有它,如果您更改边框 ..
发布时间:2021-09-23 18:37:03 其他开发

复制现有 Three.js 材料以添加位移计算

我需要在 Three.js 中使用纹理贴图进行顶点位移. 是否有支持这一点的现有材料? 如果没有,复制现有 Three.js 着色器以便我可以添加一些顶点位移计算的最佳方法是什么?我想在材质上保留现有的功能,例如阴影和线框. 解决方案 THREE.ShaderTerrain[ "terrain" ] 和 THREE.ShaderLib[ " 支持使用纹理贴图的顶点位移法线贴图"]. ..
发布时间:2021-07-23 20:04:30 其他开发

是否可以在不使用自定义着色器的情况下使用 2 个纹理(一个在另一个之上)作为材质?

我正在学习three.js,我已经做了一些关于它和基本着色器的例子(一个是 Codrop 的“飞行员"教程),但现在我很难尝试一次创建一个带有 2 个纹理的简单立方体. 我想为每个正方形的脸同时使用 2 个透明的 .png 纹理.这可能不会重复使用自定义着色器吗?我已经看到了这个答案,但是我没有成功让它正常工作,因为它很复杂并且对着色器来说相当陌生. 就上下文而言,我在这个示例上的代码 ..
发布时间:2021-07-23 20:04:26 前端开发

一个纹理的qt多个QGLShaderProgram

我使用了两个 QGLShaderProgram 来处理纹理. ShaderProgram1->bind();//QGLShader程序ShaderProgram2->bind();glBegin(GL_TRIANGLE_STRIP);...glEnd();ShaderProgram1->release();ShaderProgram2->release(); 纹理应先使用 Shaderprog ..
发布时间:2021-07-23 20:04:22 其他开发

从着色器中的 DataTextures 读取不正确

当我的 POT DataTextures 的纹素尺寸为 1:1(宽度:高度)时,我有一个程序运行良好,但是当它们的纹素尺寸为 2:1 或 1:2 时,纹素似乎不正确阅读并应用.我正在使用连续索引 (1,2,3,4,5...) 使用以下两个函数访问纹素. 我想知道我访问 texel 数据的方式是否有问题,或者我对整数索引的 Float32Array 的使用是否需要切换到 Uint8Array ..
发布时间:2021-07-23 20:04:08 其他开发

是否可以在着色器中访问预设的纹理单元?

TL;DR: 我已经激活纹理并将纹理绑定到纹理单元 1-4,现在我希望在着色器中使用它们而不使用程序特定的统一位置.是否可以使用“全局"从纹理读取数据?纹理单元? 我很难理解如何在 webgl 中访问纹理.在本纹理教程中,它说“纹理单位是对纹理的引用的全局数组.",这听起来很棒.我已经使用 绑定了我的纹理 gl.activeTexture(gl.TEXTURE1 + i);gl.bind ..
发布时间:2021-07-23 20:04:03 其他开发

使用着色器升级 Threejs 的问题

我正在研究 3d 数据可视化.我需要展示一个包含数据的世界,并使用 chrome 实验 (chromeexperiments.com/globe) 作为指导. 问题是这个可视化是用 Threejs r40 制作的,很难找到关于它的文档,所以我尝试升级到 r71. 我解决了渲染世界的兼容性问题,但无法让它显示气氛,事实上,当我尝试显示气氛时,什么也没有显示(就像气氛被渲染成黑色并隐藏了世 ..
发布时间:2021-07-23 20:04:00 其他开发

WEBGL 在顶点位置内绘制像素

我是 WebGL 和着色器世界的新手,我想知道我只绘制路径内像素的最佳方法是什么.我有每个点的位置 2d,我想在路径内填充一种颜色. 二维位置 填充 有人可以给我一个方向吗?谢谢! 解决方案 与 canvas 2d API 不同,在 WebGL 中执行此操作需要您对路径进行三角测量.WebGL 只绘制点(正方形)、线和三角形.其他一切(圆圈、路径、3d 模型)都由您来创造 ..
发布时间:2021-07-23 20:03:57 其他开发