Unity Shader 之 简单实现折叠平面(翻书)的效果

目录

Unity Shader 之 简单实现折叠平面(翻书)的效果

一、简单介绍

二、实现原理

三、注意事项

四、效果预览

五、实现步骤

六、关键代码


一、简单介绍

Shader Language的发展方向是设计出在便携性方面可以和C++、Java等相比的高级语言,“赋予程序员灵活而方便的编程方式”,并“尽可能的控制渲染过程”同时“利用图形硬件的并行性,提高算法效率”。

本文介绍,实现在Y 方向上,被地面吸收或者从地面生成的简单效果。

二、实现原理

1、首先确定一个折叠位置点

2、然后根据圆的参数方程公式:x=a+rcosθ,y=b+rsinθ(θ∈[0,2π))(a,b)为圆心坐标,r为圆半径,θ为参数,求得 x ,y

3、分两个 pass 通道渲染前面和背面

三、注意事项

1、好像只有 Plane 好使;(使用 Quad,和RawImage 和Image,把 y 改为 z 效果也不是很对)

2、效果根据实际情况调整

四、效果预览

五、实现步骤

原理图示:

具体步骤:

1、打开Unity,新建一个工程

2、在工程中,新建一个Shader,并新建对应材质,导入两张图片

3、场景中添加一个 plane

4、把材质赋给 Plane ,并添加对应图

5、运行场景,效果如上

六、关键代码

Shader "Unlit/ShaderPaperFold"
{Properties{_MainTex ("Texture", 2D) = "white" {}_BackTex("背景图",2D)="white"{}_FoldPos("折叠位置", float) = 5_FoldAngle("折叠角度",Range(1,180)) = 90[Toggle(ENABLE_DOUBLE)]_DoubleFold("是否进行双面折叠", float) = 0}SubShader{Tags{"Queue"="Transparent" "RenderType"="Transparent"}pass{ZWrite onCull BackBlend SrcAlpha OneMinusSrcAlphaCGPROGRAM#pragma vertex vert #pragma fragment frag #pragma shader_feature ENABLE_DOUBLE#include "UnityCG.cginc"struct v2f{float4 vertex:SV_POSITION;float2 uv:TEXCOORD0;};sampler2D _MainTex;float4 _MainTex_ST;float _FoldPos,_FoldAngle;v2f vert(appdata_base v){float angle = _FoldAngle;float r = _FoldPos - v.vertex.x;#if ENABLE_DOUBLEif(r<=0){angle = 360 - _FoldAngle;}#elseif(r<=0){angle = 1;}#endifv.vertex.x = _FoldPos + r * cos(angle * UNITY_PI/180);v.vertex.y = r * sin(angle * UNITY_PI / 180) ;v2f o;o.vertex = UnityObjectToClipPos(v.vertex);o.uv = TRANSFORM_TEX(v.texcoord, _MainTex);return o;}fixed4 frag(v2f i):SV_Target{fixed4 col = tex2D(_MainTex, i.uv);return col;}ENDCG}pass{ZWrite on Cull Front Blend SrcAlpha OneMinusSrcAlphaCGPROGRAM#pragma vertex vert #pragma fragment frag#pragma shader_feature ENABLE_DOUBLE#include "UnityCG.cginc"struct v2f{float4 vertex:SV_POSITION;float2 uv : TEXCOORD0;};sampler2D _BackTex;float4 _BackTex_ST;float _FoldPos,_FoldAngle;v2f vert(appdata_base v){float angle  = _FoldAngle;float r = _FoldPos - v.vertex.x;#if ENABLE_DOUBLEif(r<=0){angle = 360 - _FoldAngle;}#elseif(r<=0){angle = 1;}#endifv.vertex.x = _FoldPos + r * cos(angle * UNITY_PI/180);v.vertex.y = r * sin(angle * UNITY_PI/180);v2f o;o.vertex = UnityObjectToClipPos(v.vertex);o.uv = TRANSFORM_TEX( v.texcoord, _BackTex);return o;}fixed4 frag(v2f i):SV_Target{fixed4 col = tex2D(_BackTex,i.uv);return col;}ENDCG}}FallBack "diffuse"
}

Unity Shader 之 简单实现折叠平面(翻书)的效果相关推荐

  1. Unity Shader 之 简单 护盾Shield 效果的实现

    Unity Shader 之 简单 护盾Shield 效果的实现 目录 Unity Shader 之 简单 护盾Shield 效果的实现 一.简单介绍 二.实现原理

  2. Unity Shader 之 简单实现物体被压扁(top顶点的逐渐与bottom顶点重合)的效果

    Unity Shader 之 简单实现物体被压扁(top顶点的逐渐与bottom顶点重合)的效果 目录 Unity

  3. Unity Shader 之 简单实现物体被黑洞吸收吞噬(或者从黑洞中出来)的效果

    Unity Shader 之 简单实现物体被黑洞吸收吞噬(或者从黑洞中出来)的效果 目录

  4. CSS3简单特效--transform实现翻书效果

    CSS3简单特效–transform实现翻书效果 上一篇介绍了animation如何实现流光按钮效果,现给大家介绍一下如何利用css3的transform属性实现鼠标停留实现翻书的效果,下图是鼠标停在 ...

  5. 如何用transition实现翻书动画效果

    下面给大家介绍一个小案例,可以实现翻书的效果,以打开音乐盒为例. 这个案例主要是运用了一个transition的坐标轴,在动画效果中,要求以第二张图片的边缘进行翻页. 代码如下: 先放入两张图片在bo ...

  6. Unity Shader 实现简单的压扁效果

    有点累啊,一个CoverMap搞了一周多,还是太嫩了,还有好多东西等着我去学呢,今天就写个简单的东西吧--一个把模型压扁的效果,参考博客Unity Shader - 一些玩具Shader.话不多说,先 ...

  7. Unity Shader - 实现简单水体 - 浅水到深水颜色控制

    文章目录 制作步骤 准备好水体网格 扰动水体网格 添加水体网格色调,纹理 放置海上放哨点(一些随便放的立方体) 添加水的深浅透视效果 添加水光效 重构水顶点法线 正交的相机的深度需要注意 改进 Pro ...

  8. Unity Shader 实现简单的贴花效果(二)

    这个月进入了找不倒工作的焦虑状态,花了两周时间去学OpenGL,发现以前课上的讲的内容过于浅显,也加深了对渲染管线的了解也算是相当不错的吧. 话不多说,先上最初的效果图吧. 本效果考了该篇博客Unit ...

  9. Unity Shader 实现简单的宝石渲染

    入职实习的第一周过去了,感觉还是相当不错的,找到工作了也就不用再顶着高压去学习了,快乐. 闲话少说,先上效果图啦. 效果还是很棒的,但这不是我写的,哈哈,这个代码可以完全说就是抄Unity的案例.As ...

最新文章

  1. 在Dos下运行exe程序的时候出现找不到Cygwin1.dll文件的情况总结
  2. 应用宝上架审核要求_【建议收藏】安卓应用商店上架经验,含流程,方法
  3. c语言单词翻译大全,c语言单词翻译
  4. 让你不再对网络安全产生七种误解
  5. New beginning
  6. 列出C#进程以及详细信息
  7. js进阶 13 jquery动画函数有哪些
  8. 骚操作,简单修改源码,让你的postman自动生成POJO代码
  9. Visual Studio 代码提示选不中
  10. 逻辑斯蒂回归:家庭买私家车的概率
  11. 《信息系统设计与分析》读书笔记
  12. 【Unity3D】使用 FBX 格式的外部模型 ③ ( FBX 模型中的材质重映射 | FBX 模型使用外部材质 | FBX 模型的分解重组 )
  13. 鸿蒙大陆v2.8正式版,鸿蒙大陆2.2正式版附隐藏密码
  14. 微信小程序转头条/抖音小程序的方法
  15. 为什么说jsp被替代了_您说什么:最喜欢的Windows资源管理器替代品
  16. 关于QQ号的分发管理机制的基本方案的设计猜想和分析讨论
  17. 麦克风阵列杂音很重解决方案(科大讯飞麦克风阵列+6.0)
  18. uptown funk 火星哥霸占BILLBOARD排行榜8周的嗨爆神曲
  19. 图片转换格式的具体操作步骤
  20. 剔除matlab中NaN

热门文章

  1. 中国眼部解剖模型行业市场供需与战略研究报告
  2. 程序状态寄存器PSR
  3. 2020-01-31
  4. Linux用户身份的鉴别方式
  5. 【日常练习python】之MaShang
  6. 【中秋佳节】简易爬虫的探讨
  7. 峰度(Kurtosis)与偏态(Skewness)
  8. 哈夫曼树的一个实例,配对严蔚敏或耿国华的数据结构
  9. 什么是 博客 BLOG 什么是 网摘
  10. 打开catia界面全是白色怎么办_基于CATIA的圆柱螺旋拉伸弹簧有限元分析(文末有“彩带”)...