iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >OpenGL Shader如何实现简单转场效果
  • 144
分享到

OpenGL Shader如何实现简单转场效果

2023-06-29 05:06:41 144人浏览 泡泡鱼
摘要

这篇文章主要介绍了OpenGL Shader如何实现简单转场效果,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。渐变转场通过mix函数混合两个纹理图像,使用time在

这篇文章主要介绍了OpenGL Shader如何实现简单转场效果,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

渐变转场

通过mix函数混合两个纹理图像,使用time在[0,1]之间不停变化来控制第二个图片纹理混合的强弱变化从而实现渐变效果。

#define time iTimevoid main() {    vec2 uv = gl_FraGCoord.xy / iResolution.xy;    vec4 texture1 = texture(iChannel1,uv);    vec4 texture2 = texture(iChannel2,uv);    float progress = abs(sin(time));    gl_FragColor = mix(texture1,texture2,progress);}

切换转场

切换动画和渐变动画同样是使用mix函数来实现效果的。同时结合step函数来判断当前的progress值是否大于uv.x来控制当前绘制纹理是第一个还是第二个从而实现纹理卷帘位移效果。这里是采用了mixstep两个函数相结合来实现动画效果,同样的采用if-else也能够达到相同目的但是之前有提到过在glsl中最好优先考虑使用内置函数来实现效果,减少使用if-else判断语句。

x轴切换

#define time iTimevoid main() {    vec2 uv = gl_FragCoord.xy / iResolution.xy;    vec4 texture1 = texture(iChannel1,uv);    vec4 texture2 = texture(iChannel2,uv);    float progress = abs(sin(time));    gl_FragColor = mix(texture1,texture2,step(uv.x,progress));}

OpenGL Shader如何实现简单转场效果

y轴切换

#define time iTimevoid main() {    vec2 uv = gl_FragCoord.xy / iResolution.xy;    vec4 texture1 = texture(iChannel1,uv);    vec4 texture2 = texture(iChannel2,uv);    float progress = abs(sin(time));    gl_FragColor = mix(texture1,texture2,step(uv.y,progress));}

OpenGL Shader如何实现简单转场效果

对角线切换

对角线切换实现同样也是mixstep函数相结合,利用对角线对齐特性x-y=0的特点,当progress值到达0则切换到第二个纹理图像。

#define time iTimevoid main() {    vec2 uv = gl_FragCoord.xy / iResolution.xy;    vec4 texture1 = texture(iChannel1,uv);    vec4 texture2 = texture(iChannel2,uv);    float progress = sin(time);    gl_FragColor = mix(texture1,texture2,step(uv.x - uv.y, - progress));}

OpenGL Shader如何实现简单转场效果

位移转场

切换转场效果是底部纹理位置不动,上层纹理做覆盖来实现的。位移转场是两个纹理对象不重叠,像是类似轮播图的效果,实现效果是同时向着一个方向移动。位移动画对整体纹理做偏移处理,通过progress的值来分配第一个纹理和第二个纹理的占比。

x轴位移

#define time iTimevoid main() {    vec2 uv = gl_FragCoord.xy / iResolution.xy;    vec2 newUv = uv;    float progress = abs(sin(time));    vec4 texture3;    newUv.x -= progress;    if(uv.x >= progress){        texture3 = texture(iChannel1,newUv);    }else{        texture3 = texture(iChannel2,newUv);    }     gl_FragColor = texture3;}

OpenGL Shader如何实现简单转场效果

y轴位移

#define time iTimevoid main() {    vec2 uv = gl_FragCoord.xy / iResolution.xy;    vec2 newUv = uv;    float progress = abs(sin(time));    vec4 texture3;    newUv.y -= progress;    if(uv.y >= progress){        texture3 = texture(iChannel1,newUv);    }else{        texture3 = texture(iChannel2,newUv);    }     gl_FragColor = texture3;}

OpenGL Shader如何实现简单转场效果

感谢你能够认真阅读完这篇文章,希望小编分享的“OpenGL Shader如何实现简单转场效果”这篇文章对大家有帮助,同时也希望大家多多支持编程网,关注编程网精选频道,更多相关知识等着你来学习!

--结束END--

本文标题: OpenGL Shader如何实现简单转场效果

本文链接: https://www.lsjlt.com/news/322843.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • OpenGL Shader如何实现简单转场效果
    这篇文章主要介绍了OpenGL Shader如何实现简单转场效果,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。渐变转场通过mix函数混合两个纹理图像,使用time在...
    99+
    2023-06-29
  • OpenGL Shader如何实现阴影遮罩效果
    小编给大家分享一下OpenGL Shader如何实现阴影遮罩效果,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!smoothstep另一种用法在之前Ope...
    99+
    2023-06-29
  • OpenGL Shader实现阴影遮罩效果
    目录smoothstep另一种用法遮罩效果实现效果扩展smoothstep另一种用法 在之前OpenGL Shader-抗锯齿实现文章中所介绍的那样:为了抗锯齿效果可以用smooth...
    99+
    2024-04-02
  • 如何使用OpenGL Shader实现彩虹条纹效果
    小编给大家分享一下如何使用OpenGL Shader实现彩虹条纹效果,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!前言在一款图片处理软件colorow中发现彩虹效果滤镜感觉蛮有意思。在OpenGL Shader系...
    99+
    2023-06-29
  • OpenGLShader实现简单转场效果详解
    目录转场介绍渐变转场切换转场x轴切换y轴切换对角线切换位移转场x轴位移y轴位移转场介绍 转场效果常出现再视频剪辑当中,用于衔接两段视频片段切换的过渡效果。转场常常在两个场景切换中去使...
    99+
    2024-04-02
  • OpenGL Shader如何实现光照发光体特效
    这篇文章主要介绍了OpenGL Shader如何实现光照发光体特效,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。内发光原理内发光原理简单概况是:采样周边像素alph...
    99+
    2023-06-29
  • OpenGL Shader抗锯齿如何实现
    这篇文章主要为大家展示了“OpenGL Shader抗锯齿如何实现”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“OpenGL Shader抗锯齿如何实现”这篇文章吧。绘制圆形...
    99+
    2023-06-29
  • Unity Shader实现黑幕过场效果
    本文实例为大家分享了Unity Shader实现黑幕过场效果的具体代码,供大家参考,具体内容如下 一、效果演示 二、实现 Shader:黑幕过场着色器 //黑幕过场着色器 ...
    99+
    2024-04-02
  • Unity Shader实现动态过场切换图片效果
    本文实例为大家分享了Unity Shader实现动态过场切换图片的具体代码,供大家参考,具体内容如下 一、简单介绍 Shader Language的发展方向是设计出在便携性方面可以和...
    99+
    2024-04-02
  • Android OpenGL如何实现APP裸眼3D效果
    Android OpenGL如何实现APP裸眼3D效果,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。原理简介 & OpenGL 的优势裸眼 3D 效果的本质是...
    99+
    2023-06-28
  • HTML+CSS如何实现简单下拉菜单效果
    小编给大家分享一下HTML+CSS如何实现简单下拉菜单效果,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!使用Html+css实现简单的下拉菜单代码非常简单,需要的...
    99+
    2023-06-08
  • jQuery如何实现简单的动画效果
    这篇文章主要讲解了“jQuery如何实现简单的动画效果”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“jQuery如何实现简单的动画效果”吧!jQuery 实...
    99+
    2024-04-02
  • js如何实现简单的选项卡效果
    这篇文章主要介绍了js如何实现简单的选项卡效果,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。效果如下: 代码如下:<!DOC...
    99+
    2024-04-02
  • JavaScript如何实现简单的倒计时效果
    这篇文章主要介绍了JavaScript如何实现简单的倒计时效果的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇JavaScript如何实现简单的倒计时效果文章都会有所收获,下面我们一起来看看吧。具体代码如下<...
    99+
    2023-07-02
  • 小程序如何实现简单吸顶效果
    这篇“小程序如何实现简单吸顶效果”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“小程序如何实现简单吸顶效果”文章吧。要求:使页...
    99+
    2023-06-30
  • Ajax如何实现简单下拉选项效果
    这篇文章给大家分享的是有关Ajax如何实现简单下拉选项效果的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。基本都是固定步骤!主要在JAVASCRIPT和PHP中的操作HTML代码里就只有两个SELECT标签如下:&...
    99+
    2023-06-08
  • js实现简单日历效果
    本文实例为大家分享了js实现简单日历效果的具体代码,供大家参考,具体内容如下 ## css模块 <style type="text/css"> *{ ma...
    99+
    2024-04-02
  • iOS实现简单分栏效果
    本文实例为大家分享了iOS实现简单分栏效果的具体代码,供大家参考,具体内容如下 直接贴代码喽 GMSubfieldViiew.h #import <UIKit/UIKit.h&...
    99+
    2024-04-02
  • JavaScript实现拖拽简单效果
    本文实例为大家分享了JavaScript实现拖拽效果的具体代码,供大家参考,具体内容如下 1.1 拖拽的基本效果 思路: 鼠标在盒子上按下时,准备移动 (事件加给物体) 鼠标移动时,...
    99+
    2024-04-02
  • Vue实现简单弹窗效果
    本文实例为大家分享了Vue实现简单弹窗效果的具体代码,供大家参考,具体内容如下 选中input 弹出选项框 显示弹窗 首先要在components中新建两个组件 要实现子组件向父...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作