fragment-shader相关内容
我使用的是戈多的碎片着色器。我可以获得当前像素的世界坐标,如下所示: vec3 pixel_world_pos = (CAMERA_MATRIX * vec4(VERTEX, 1.0)).xyz; 假设我将Pixel_world_pos.y增加10,我想知道该像素是什么颜色。我怎么才能弄清楚这一点呢? 我知道信息存储在UV中,但我使用的是世界坐标,而不是UV坐标. 推荐答案
..
我想修复此图像的失真: 质量问题很抱歉,但这是我能找到的最好的例子了。 我不知道是否有可能修复这种扭曲(我希望有直门和直天花板),但基本上,我不想将像素推到图像外部(红色箭头),这会增加模糊效果,我想做相反的操作(绿色箭头),将像素拉向中心。 如果你有什么想法,那就太棒了。也欢迎其他解决方案! 推荐答案 对于鱼眼效果的定义,您必须将角度(Alpha)与视口的对角线(d)相
..
我正在尝试将Shader玩具转换为Javascript和WebGL,以便它可以独立于ShaderTool运行。ShaderToy具有缓冲区的概念,在此示例中,它重新循环缓冲区并改善输出图像。它在BUF A选项卡上执行此操作。 https://www.shadertoy.com/view/MdyGDW 它将其输出写入绑定到iChannel0的缓冲区A,然后在每个绘制周期从相同的iChanne
..
我一直在尝试使用ShaderTool的鱼眼着色器。 我添加了自己的帧分辨率,并更改了一些关键字(texture->texture2D,fragColor->gl_FragColor),但仅此而已。 我真的不知道为什么它不能工作,也不知道如何调试它。 结果,我得到了一张单色的灰色图像。 以下是我的片段着色器的代码: precision mediump float; uniform ve
..
我正在从头开始做一个引擎(不是出于我自己的自由意志OFC),我需要在我的对象至少有2个独立光源的地方做它。对于此公式,我使用vertex.shader和Fragment.shader。遗憾的是,此公式只能显示一个光,但如上所述,我需要使公式至少显示2个光。 这是Vertex.shader: layout(location = 0) in vec4 vPosition; layout(l
..
详细信息:我有一个带有统一纹理的 glsl 片段着色器,“u_MapTexture"上面有几千种颜色(最多大约 10k-15k 个唯一 rgb 值).我还有一个统一的调色板纹理(“u_paletteTexture"),它是 16384 × 1,我想用它来索引 u_MapTexture 上的颜色.我的问题是,无论我在数学上尝试什么,我似乎都无法使用传递颜色的 RGB 值正确索引从第一个纹理到调色板纹
..
我查看了不同的来源,发现我们可以使用片段着色器绘制虚线.因为我是 OpenGL 新手,所以我无法理解. 谁能分享一些在Android中使用片段着色器和GL_LINE_STRIP绘制虚线或虚线的代码示例. 参考资料: OpenGL3 中的虚线? 对象的虚线后边缘 解决方案 OpenGL ES 不支持点画线. 如果您使用 OpenGL ES 1.00,那么您可以使用
..
假设我正在使用 WebGL 和 GLSL 制作计算着色器. 在这个着色器中,每个片段(或像素)都想查看纹理上的每个像素,然后决定它自己的颜色. 通常一个片段从几个纹理中采样它提供的纹理坐标(UV 值),但我想有效地从单个纹理中为单个片段采样所有 UV 值. 这可能吗? 解决方案 编辑:我能够从 128x128 纹理中的每个像素进行采样,但移动到 256x256 会导致 C
..
我只想存储每个片段计算所需的权重数组. 这个: float weights[5] = float[5](3.4, 4.2, 5.0, 5.2, 1.1); 扔这个: ERROR: 0:30: ']' : 语法错误语法错误错误:0:30:';': 语法错误语法错误 解决方案 来自OpenGL ES SL 1.0 规范,段落 4.1.9 Arrays(第 24 页): 没有在声明
..
我想为在 WebGL 中渲染的对象使用一些 3D 纹理.我目前在片段着色器中使用以下方法,如 WebGL 和 OpenGL 差异: //tex 是一个纹理,立方体的每个切片水平放置在纹理上.//texCoord 是一个 3d 纹理坐标//size 是立方体的大小,以像素为单位.vec4 sampleAs3DTexture(sampler2D tex, vec3 texCoord, float s
..
在 learningwebgl 教程1中,我在片段着色器中发现了一条有趣的行. 精度 mediump float; 我找到了一篇关于它的文章 在这里,但我还是不明白是什么意思? 如果我删除这条线,什么都不会改变.一切都是一样的.那么precision mediump float是什么意思呢? 解决方案 这决定了 GPU 在计算浮点数时使用的精度.highp 是高精度的,当然比 m
..
我在将 Android 中的相机预览从 YUV 格式转换为 RGB 时遇到问题.转换的目的是应用一些效果.我尝试通过片段着色器进行转换,因为本机代码的转换速度很慢(大约 14fps).我使用的参考是 http://jyrom.tistory.com/m/post/view/id/187.我尝试将此代码移植到 Android 平台,但结果是黑绿色矩形.但是,我可以通过我得到的输出观看某种形式.你能不
..
我在three.js r.58中使用普通着色器,我理解需要一个法线贴图.但是,我使用的是动态置换贴图,因此在这种情况下,预先计算的法线贴图不起作用. 我发现的所有光照置换贴图示例都使用平面着色或预先计算的法线贴图.是否可以根据置换的顶点动态计算法线? 编辑:我已经发布了 带有显示平面法线的置换贴图的球体演示: 这是 github 存储库的链接,其中包含说明此问题的所有示例以及我最
..
我想为我在 WebGL 中渲染的对象使用一些 3D 纹理.我目前在片段着色器中使用以下方法,如 WebGL 和 OpenGL 差异: //tex 是一个纹理,立方体的每个切片都水平放置在纹理上.//texCoord 是一个 3d 纹理坐标//size 是立方体的大小,以像素为单位.vec4 sampleAs3DTexture(sampler2D tex,vec3 texCoord,浮动大小){浮
..
我正在尝试了解此色度键过滤器的工作原理.Chroma Key,如果你不知道,是一种绿屏效果.有人能解释一下这些函数中的一些是如何工作的以及它们究竟在做什么吗? float maskY = 0.2989 * colorToReplace.r + 0.5866 * colorToReplace.g + 0.1145 * colorToReplace.b;浮动掩码Cr = 0.7132 *(color
..
现在我正在尝试将一个整数数组传递到片段着色器中,并通过一个统一数组执行此操作: uniform int myArray[300]; 并在着色器外用 glUniform1iv 填充它. 不幸的是,大于 ~400 的统一数组失败了.我知道我可以使用“统一缓冲区"代替,但似乎无法找到将大型一维数组传递到带有缓冲区或其他方式的片段着色器的完整示例. 谁能提供这样的例子? 解决方案
..
如果在 OpenGL 管道的光栅化阶段发生线性插值,并且顶点已经转换到屏幕空间,那么用于透视正确插值的深度信息来自哪里? 谁能详细描述 OpenGL 如何从屏幕空间基元到具有正确内插值的片段? 解决方案 顶点着色器的输出是一个四分量向量,vec4 gl_Position.来自核心 GL 4.4 规范的第 13.6 节坐标变换: 剪辑坐标用于着色器执行的顶点结果,产生一个顶点坐标
..
我的任务是通过 Stage3d (Adobe Flash) 技术渲染二次贝塞尔曲线(路径),该技术没有任何开箱即用的绘图扩展(据我所知,OpenGl 拥有它).是的,有一个 Starling-Extension-Graphics,但它使用简单的方法将曲线段划分为许多直线,从而为我的长曲线路径生成了很多三角形. 所以.. 有一种完美的方法可以为 Loop 和 Blinn 渲染独立于分辨率的形状
..
我想看到一个没有对角线的对象的线框 目前,我根据顶点添加线,问题是在我有几个之后我遇到了严重的性能下降. 示例此处要么对我的 Three 版本来说太新,要么不起作用(我在那里评论过). 所以我想尝试实现一个着色器. 我尝试使用这个着色器:https://stackoverflow.com/a/31610464/4279201但它坏了零件的形状,我收到 WebGL 错误.
..
我正在向我的 OpenGL 2.1/GLSL 1.2 应用程序添加一个顶点和片段着色器. 顶点着色器: #version 120无效主(无效){gl_Position = ftransform();gl_FrontColor = gl_Color;} 片段着色器: #version 120无效主(无效){if (/* 测试一些条件 */) {丢弃;} 别的 {gl_FragColor
..