如何创建多停止渐变片段着色器?

2024-06-27

我正在尝试创建一个 OpenGL ES 2.0 片段着色器,它沿一个轴输出多个停止渐变。它应该在以百分比定义的点处的多种颜色之间进行插值。

我已经通过使用实现了这一点if是片段着色器,如下所示:

float y = gl_FragCoord.y;
float step1 = resolution.y * 0.20;
float step2 = resolution.y * 0.50;

if (y < step1) {
    color = white;
} else if (y < step2) {
    float x = smoothstep(step1, step2, y);
    color = mix(white, red, x);
} else {
    float x = smoothstep(step2, resolution.y, y);
    color = mix(red, green, x);
}

他们说片段着色器中的分支会降低性能。是否有一些巧妙的技巧可以用来在许多值之间进行插值而不使用if是?它真的值得吗(我知道这是非常主观的,但作为经验法则)?

为了说明我的问题,完整源代码(虽然仍然很短)在此 GLSL Sandbox 链接中:http://glsl.heroku.com/e#8035.0 http://glsl.heroku.com/e#8035.0


如果你想消除分支,你可以执行以下操作(取自 Heroku);

color = mix(white, red, smoothstep(step1, step2, y));
color = mix(color, blue, smoothstep(step2, step3, y));
color = mix(color, green, smoothstep(step3, resolution.y, y));

但我完全不确定这是否比 if/elses 更快。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何创建多停止渐变片段着色器? 的相关文章

  • 从索贝尔确定图像梯度方向?

    我正在尝试使用 openCV 的 Sobel 方法的结果来确定图像梯度方向 我知道这应该是一个非常简单的任务 我从此处复制了许多资源和答案中的方法 但无论我做什么 所得方向始终在 0 57 度之间 我希望范围为 0 360 我相信所有的深度
  • 使用 Alpha 渲染纹理问题

    当我渲染到纹理 然后绘制相同的图像时 它似乎使一切变得更暗 要获取此图像 http img24 imageshack us img24 8061 87993367 png http img24 imageshack us img24 806
  • iPhone glShader二进制

    有谁有如何编译着色器 保存着色器二进制文件以及使用 glShaderBinary 稍后使用 iPhone iOS OpenGL ES 2 0 加载着色器的示例 这是不可能的 至少对于 iOS 4 及更低版本 iOS 不支持任何预编译的二进制
  • 使用带渐变的圆角矩形的 CSS3 聚光灯效果

    我正在为一个网络应用程序编写一个交互式教程 旨在突出显示用户界面的各个部分 本教程旨在一次重点关注一个部分 并告诉用户如何与其交互 您可能在智能手机应用程序上看到过类似的内容 对于可用于突出现有界面的特定 CSS 我发现的最佳解决方案是使用
  • 将渐变应用于 CAShapeLayer

    有人有将渐变应用于 CAShapeLayer 的经验吗 CAShapeLayer 是一个很棒的图层类 但它似乎只支持纯色填充着色 而我希望它具有渐变填充 实际上是一个可设置动画的渐变 与 CAShapeLayer 相关的所有其他内容 阴影
  • 如何在CSS中的图像中添加渐变/滤镜

    我这里有一张图片 我想复制 theverge com 网站中的 css 样式 见下图 我将在我的博客 主页 中使用它 因为我试图复制网站 theverge com 的内容 这就像在半透明渐变和特色图像上显示帖子标题和作者姓名 请帮忙 这是我
  • iPhone:OpenGL ES:检测您是否点击了屏幕上的对象(立方体)

    我已经问了一个类似的问题 这让我达到了现在的水平 但我真的需要一些帮助 这是我完成一些很酷的事情的最后一件事 在我看来哈哈 我有一个 3D 世界 我可以在其中移动 这个世界里有简单的立方体 使用函数 CGPoint getScreenCoo
  • glClipPlane - webGL 中有等效的吗?

    我有一个 3D 网格 是否有可能像这样呈现剖面图 剪辑 glClipPlane在OpenGL中 我正在使用 Three js r65 我添加的最新着色器是 片段着色器 uniform float time uniform vec2 reso
  • 允许使用 SurfaceTexture 在 GLSurfaceView 渲染器中进行多通道渲染

    我正在显示视频GLSurfaceView使用需要连续应用多个着色器的自定义渲染器 目前 它可以成功地使用一个着色器 但我不确定如何扩展渲染管道以连续应用多个着色器 我知道有一些关于应用多个着色器的示例 使用FrameBuffers and
  • scipy.interpolate.griddata:剪切 z 值并获取其中的区域

    Regarding to this analogy to scipy interpolate griddata https stackoverflow com questions 18496783 analogy to scipy inte
  • R-了解 akima::interp 结果中的 NA 值

    我有以下数据框 ref dat k Intensity Slope 1 0 021467214 33 16 2 0 012444759 33 8 3 0 006079156 33 4 4 0 003792025 33 2 5 0 02276
  • 现在有多少 Android 设备支持 GLSurfaceView.setPreserveEGLContextOnPause?

    我不需要确切的数字 百分比就足够了 例如 如果我开发一个具有 4 0 分钟 SDK 版本的应用程序 我如何确保上下文将被保留 可能取决于 OpenGL ES 版本吗 我试图查找有关具有有限 EGL 上下文的芯片的信息 但找不到任何信息 我需
  • 当多天数据丢失时用 NaN 填充数据框

    我有一个 pandas 数据框 我对其进行插值以获得每日数据框 原始数据框如下所示 col 1 vals 2017 10 01 0 000000 0 112869 2017 10 02 0 017143 0 112869 2017 10 1
  • SVG 极坐标渐变

    我是 SVG 的初学者 但我想学习一些技术 简而言之 有没有一种简单的方法来创建这样的东西 我正在考虑创建一个极坐标渐变 然后裁剪它 但是如何生成极坐标梯度呢 即使没有本地方法 也许可以用简单的线性渐变然后使用一些直角极坐标变换来实现 有办
  • 使用 OpenGL ES 2.0 绘制 2D 图像

    我一直在努力使用适用于 Android 的 openGL ES 2 0 从 jpg png 文件绘制 2D 图像 我所看到的教程都是针对 3D 图像纹理的 因此很难弄清楚如何绘制常规 2D Sprite 我有一个正方形要绘制和旋转 但是一旦
  • OpenGL 中的 VBO 到底是什么?

    我正在尝试了解 OpenGL 背后的理论 目前正在研究 VBO 到目前为止我的理解是 当我们声明一系列顶点时 比如说形成一个三角形基元的 3 个顶点 我们基本上不会将它们存储在任何地方 它们只是在代码中声明 但是 如果我们想将它们存储在某个
  • C++ 从一组点进行平面插值

    我正在使用 PCL 点云 库用 C 进行编程 我的问题是 计算某些点的方差 但仅相对于平面的垂直轴 我会解释一下自己 所以我正在做的是将点云按表面平滑度划分为多个片段 区域生长分割 http pointclouds org document
  • 如何获取片段的当前颜色?

    我正在尝试了解 GLSL 中的着色器 并且找到了一些有用的资源和教程 但我一直在寻找一些应该是基本且微不足道的东西 我的片段着色器如何检索当前片段 你通过说设置最终颜色gl FragColor whatever 但显然这是一个仅输出值 如何
  • 如何创建多停止渐变片段着色器?

    我正在尝试创建一个 OpenGL ES 2 0 片段着色器 它沿一个轴输出多个停止渐变 它应该在以百分比定义的点处的多种颜色之间进行插值 我已经通过使用实现了这一点if是片段着色器 如下所示 float y gl FragCoord y f
  • CSS3 背景渐变未验证,有人可以告诉我为什么吗?里面的代码示例

    有人能告诉我为什么下面的 css 没有验证吗 我一直在尝试自己研究这个问题 但没有运气 我读过的所有文档都说这是在 css3 中进行渐变的正确原因 header color white font size 12px font family

随机推荐

  • 在运行时优雅地关闭 Flink Kafka Consumer

    我正在将 FlinkKafkaConsumer010 与 Flink 1 2 0 一起使用 我面临的问题是 有没有办法可以关闭整个管道以编程方式如果看到某种情况 可能的解决方案是我可以通过调用关闭kafka消费者源close FlinkKa
  • Lambda 的 AWS 开发工具包 V2 Maven 库是什么?

    我正在尝试更新我的项目 以便通过 bom 配置来使用 SDK v2 我已经更新了我的 pom 文件 但现在RequestHandler and Context找不到 这是我的 Maven 配置文件
  • 如何按范围对列表元素进行分组/计数

    如果我的 x 列表和 y 列表是 x 10 20 30 y 1 2 3 15 22 27 我希望返回值是一个字典 其中包含小于 x 值的元素计数 10 3 20 1 30 2 我有一个非常大的列表 所以我希望有一种更好的方法来做到这一点 不
  • 如何在C中动态创建和读取结构体?

    我怎样才能做这样的事情 只是一个例子 any struct my struct create struct add struct member my struct a int member add struct member my stru
  • 如何在 Ubuntu 中使用 gems?

    我最近升级到 Ubuntu 9 04 但在使用 gems 时遇到问题 我使用 apt get 安装了 Ruby Rubygems 和 Rails 这rails命令确实有效 然后我安装了 capistrano 和其他 gem 例如 herok
  • 如何使用 C# 向 WordPress 发帖? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我想编写一个程序 可以使用 C 通过 POST 方法将数据发布到 WordPress 我不知道该怎么做
  • 首次使用 SBT - 检索代理背后的依赖项时出现问题

    我已经下载了 SBT sbt 0 13 15 zip 并将其解压缩 但在运行 sbt bat 时遇到问题 最初 我遇到了代理问题 当我发现需要指定时修复了这些问题onlyhttpsconfig 而不是 http 的 当提供两者时 它使用的是
  • 如何在原生 Swift 中实现以前称为 NSMutableOrderedSet 的可变有序集泛型类型?

    我正在尝试实现一个通用的可变有序集类型 它需要符合许多协议才能以与 Swift 中的数组和集合相同的方式运行 首先要实现泛型类型元素需要符合Hashable https developer apple com documentation s
  • 如何判断单词是日语还是英语?

    我想在此方法中对英语单词和日语单词进行不同的处理 if english say english else say not english 我怎样才能在JSP中实现这一点 日语字符位于某些 Unicode 范围内 U 3040 U 309F
  • 多数组的初始化引发了未报告的异常python

    我是一名正在学习Python的新程序员 我最近正在尝试学习如何使用 numpy 导入 csv 文件 这是我的代码 import numpy as np x np loadtxt abcd py delimiter True unpack T
  • 从 Maven POM 文件读取属性文件

    我有带有一些配置的 Maven POM 文件 在插件部分中 我有带有一些配置的 Maven tomcat 插件 如下所示
  • AnimateLayoutChanges 不适用于 RecyclerView

    我有一个屏幕 其中有 Recyclerview 和 LinearLayout 内的其他元素 问题是当我删除 RecyclerView 的项目时 animateLayoutChanges 在这种情况下不起作用 有谁知道为什么会发生这种情况 X
  • MongoDB db.collection.count() 与 db.collection.find().length()

    我想了解为什么这些命令在从mongos针对相同 MongoDB 集合的实例 返回不同的数字 db users count db users find length 原因是什么 这可能是潜在问题的征兆吗 我相信你的收藏已经被碎片化了 大多数分
  • 通过 Javascript 获取一个月中的几周

    在 Javascript 中 如何获取一个月中的周数 我似乎无法在任何地方找到这方面的代码 我需要它才能知道给定月份我需要多少行 更具体地说 我想要一周中至少有一天的周数 一周定义为从星期日开始到星期六结束 所以 对于这样的事情 我想知道它
  • 如何让 Twitter Bootstraps 移动导航栏覆盖页面上的内容而不是将其向下推?

    我正在使用 Twitter Bootstrap 并且想修改移动导航栏 以便在展开时下拉菜单覆盖页面上的内容 而不是将其向下推 我知道我可能需要制作包含 div 绝对定位 增加它的 z index 并定位外部 div 相对而言 但我似乎无法让
  • Android 中单击按钮即可启动相机

    我想在单击应用程序中的按钮时打开设备的摄像头 请帮帮我 Button 的 onClick 内部 Intent intent new Intent android media action IMAGE CAPTURE startActivit
  • 为 iPhone 创建 .ipa

    我为 iPhone 开发了一款应用程序 构建后 我在构建文件夹中得到了 app 文件 我的应用程序名称是Myapp 然后我在build文件夹中得到了Myapp app文件 我的问题是我想创建 ipa 文件 这是怎么回事 它是为了安装 越狱的
  • 结构破坏中的奇怪行为

    我正在尝试将一个结构写入文件并将其读回 这样做的代码在这里 include
  • Spring Jsps 和跳转到锚点

    我想知道 Spring 中是否有某种方法可以在控制器中指定我希望将客户端发送到我用于视图的 jsp 页面中的特定锚点 我的 jsp 页面中有一个部分 由 errors锚点 显示发生的任何表单错误 每当我需要在模型验证失败后将它们发送回 js
  • 如何创建多停止渐变片段着色器?

    我正在尝试创建一个 OpenGL ES 2 0 片段着色器 它沿一个轴输出多个停止渐变 它应该在以百分比定义的点处的多种颜色之间进行插值 我已经通过使用实现了这一点if是片段着色器 如下所示 float y gl FragCoord y f