1.逐帧动画shader

最近项目压力不大,抽时间看了些关于shader和游戏引擎的书籍,准备开始shader的学习。

在网上看到这位前辈(http://blog.sina.com.cn/s/articlelist_2312702844_6_1.html)写的博客,觉得很不错,学习曲线应该很适合自己,所以决定也从头一篇一篇每个shader自己实现一下,并加入自己的理解。今天就是调试的第一篇,很简单的逐帧动画shader。

这个shader的原理就是根据时间,变化uv的值,使得纹理映射时取的uv范围本应是0到1,变化为根据子图片数量切割成的区间。比如序列帧图片为两行四列,在纹理映射时,x和y的范围本应是0到1,但是经过处理,会变成在不同的时间段内,映射范围为不同的区间,比如x轴分别为0-0.25,0.25-0.50,0.50-0.75,0.75-1;y轴为0-0.5,0.5-1.这样,在不同的时间段内就可以取出对应的子图片。

Shader "Stutdy/1_FrameAnimation"
{Properties{_Color("Main Color", Color) = (1,1,1,1)_MainTex("Base (RGB) Trans (A)", 2D) = "white" {}_SizeX("列", Float) = 4_SizeY("行", Float) = 2_Speed("播放速度", Float) = 150}SubShader{// 这里使用Unity3d自带光照模型Lambert// 不用做顶点处理,只需要一个表面处理函数surfCGPROGRAM#pragma surface surf Lambert alpha  //开启Alpha透明// 声明参数fixed4 _Color;sampler2D _MainTex;uniform fixed _SizeX;uniform fixed _SizeY;uniform fixed _Speed;// 获取_MainTex的UV信息定义输入结构体struct Input{// 在贴图变量前加上uv表示提取uv值(二维坐标)float2 uv_MainTex;};void surf(Input IN, inout SurfaceOutput o){// 获取单元格UVfloat2 cellUV = float2(IN.uv_MainTex.x / _SizeX, IN.uv_MainTex.y / _SizeY);  //这步首先把范围缩小为初始为0的区间// UV坐标值范围为0-1,获取单元格宽度float deltaX = 1 / _SizeX; // 每个区间宽度float deltaY = 1 / _SizeY; // 每个区间高度// 当前播放总索引int index = _Time * _Speed;// 求列索引int col = fmod(index, _SizeX);// 求行索引int row = fmod(index / _SizeX, _SizeY); //这步多加了取余数操作,可以循环播放动画// 原始UV + 当前格增量cellUV.x += col * deltaX;  //确定x的区间cellUV.y += row * deltaY;  //确定y的区间	// 创建tex2d(材质,uv)*主色fixed4 c = tex2D(_MainTex, cellUV) * _Color;// RGBo.Albedo = c.rgb;// 透明度o.Alpha = c.a;}ENDCG}
}



附上工程链接:http://download.csdn.net/detail/yinfourever/9563256

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/246359.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

panel中html怎么写,panel控件有什么用 请写出Panel控件的用途

当多个panel控件重叠时,把一个panel的visible/设置为true,其它的设置为f例如有3个panel,分别为panel1,panel2,panel3 如果重叠的话,把他们的大小设置为相同大小,直接通过上下层来控制即可,例如想要panel2显示出来,就用…

html页面如何实现搜索功能,使用jQuery怎么实现一个页面关键字搜索功能

使用jQuery怎么实现一个页面关键字搜索功能发布时间:2021-01-04 16:46:38来源:亿速云阅读:136作者:Leah这篇文章给大家介绍使用jQuery怎么实现一个页面关键字搜索功能,内容非常详细,感兴趣的小伙伴们可以参…

html相对定位向上偏移,使用CSS的相对定位和偏移量

这是利用CSS相对定位和偏移写成的表单输入框效果,不是以前用的表格那种,也没有用UL li,觉得借此示例可练习一下CSS,特别是CSS的定位和布局方面的知识,了解top,bottom,left,right这些偏移量属性的用法。CSS相对定位和偏移写成的表单…

2.转动的地球shader

原理很简单,根据时间对uv中的x轴进行位移,对于地面和云层,取不同的移动速度,分别计算对应的uv坐标,再根据uv坐标从地面和云层的纹理中分别取出对应的值,最后把两者用lerp函数进行混合作为最终结果。 下边的…

3.顶点外扩方法实现的描边shader

描边shader的实现有很多种,顶点外扩是其中之一。顶点外扩的原理是用2个Pass 渲染物体2次第一遍:描边,顶点沿法线方向外拓后用黑色渲染。外扩这一步的实现是在投影空间,也就是2D的,根绝法线的x和y值进行外扩,因为是沿着…

为此计算机所有用户安装加载项,安装Office 2013后,无法在计算机上安装Outlook加载项...

我使用Outlook Add in模板和VSTO在visual studio 2010中实现了Outlook添加,我使用MSI安装程序(在visual studio 2010中创建)为它创建了一个安装..我能够在所有机器上安装它(x86和x64) ) .最近我尝试在安装了Office 2013的计算机上安装相同的安装程序并收到以下错误&…

4.边缘光照的描边shader

【思路】:面向摄像机的物体,它的表面法线【normal】和视角向量【viewDir】的【夹角】越靠近边缘就越大。那么就可以根据这个夹角进行处理,夹角越大,那么发射光越强,就可以实现我们想要的效果。 Shader "Study/4_O…

html 怎么设置cooki,怎么设置浏览器接受cookie

怎么设置浏览器接受cookie把浏览器设置成接受cookie方法,以IE11为例: 1,打开IE浏览器,在菜单栏上点击“工具”,弹出下拉菜单点击“Internet选项”。 2,点击“隐私”选项,在页面中点击“高级”。…

5.Lambert光照Diffuse Shader

http://blog.csdn.net/candycat1992/article/details/17355629 这篇文章写的很好,这里就直接上代码了 Shader "Study/5_LambertDiffuse" {Properties{_Color("Main Color", Color) (1,1,1,1)_MainTex("Base (RGB)", 2D) "whit…

计算机用户的注册表,计算机上的注册表在哪里

注册表在哪里: 计算机中的注册表在哪里?疯狂代码?: http://CrazyCoder.cn/DeveloperUtil/Article31113.html“开始”→“运行”菜单项,在运行中输入regedit,然后按Enter打开注册表编辑器,逐一展开上述各项以获取注册表…

2017计算机应用技术考研,2017年中国科学技术大学081203计算机应用技术考研专业目录与考试科目.docx...

2017 年中国科学技术大学081203 计算机应用技术考研专业目录及考试科目081203 计算机应用技术1401、计算机网络应用技术李晓风① 101 思想政治理论;② 201谭海波英语一; ③ 301 数学一;④ 40802、计算机视觉张 龙计算机学科专业基础综合03、遥…

6.Half Lambert光照Diffuse Shader

简单来说,Lambert定律认为,在平面某点漫反射光的光强与该反射点的法向量和入射光角度的余弦值成正比(即我们之前使用dot函数得到的结果)。Half Lambert最初是由Valve(游戏半条命2使用的引擎即是其开发的)提…

伯克利计算机科学录取率,Berkeley的CS「加州大学伯克利分校计算机科学系」

加州大学伯克利分校电气工程与计算机科学系开设有以下学位项目,分别是:电气工程与计算机科学理学硕士(MS in Electrical Engineering and Computer Sciences):为期1-2年,共计24个学分,要求申请者本科毕业,不…

7.Phong 和 BlinnPhong

Lambert漫反射光照模型,这是一个用来模拟粗糙表面对光线的漫反射现象的经验模型,对于纸张、粗糙墙壁等等来说,这个模型或许够用,但对于金属这样的光滑表面来说,我们就需要使用Phong模型来模拟光滑表面对光线的镜面反射…

html css animation,css animation是什么?

animation是CSS3中的一个简写属性,可以通过设置六个动画属性来实现动画效果。这六个属性分别为动画名称、动画时间、速度曲线、动画延迟、播放次数及动画是否反向播放。语法:animation: name duration timing-function delay iteration-count direction;…

8.平面阴影

public class CastShadow : MonoBehaviour {public Transform rec;//接受阴影的物体// Use this for initializationvoid Start () {GetComponent<Renderer>().sharedMaterial.SetMatrix("_World2Ground", rec.GetComponent<Renderer>().worldToLocalMat…

千分之三用计算机怎么算,浓度换算计算器(浓度单位换算器在线使用)

基本公式&#xff1a;c1000ρω/m 式中&#xff1a;c-----物质的量浓度 单位mol/l1000------1000毫升 单位ml ρ------密度 单位 g/ml ω----质量分数 % m------溶质的摩尔质量 单位g/mol看过很多答案&#xff0c;都是抄的 &#xff0c;如果抄袭&#xff0c;不给分 哦 问&#…

9.球体阴影

上一篇讲的阴影shader是通过两个pass来渲染出的&#xff0c;第一个pass渲染要投影的物体本体&#xff0c;第二个pass渲染物体的阴影&#xff0c;也就是说阴影的渲染是在物体的shader中而不是地面的shader。下面要讲的球体阴影的shader是放在要接受阴影的地面上。 原理如下图&am…

css html 抽屉,CSS快速入门-前端布局1(抽屉)(示例代码)

一、效果图前面对CSS基础知识有了一定的了解&#xff0c;是时候开始实战了&#xff01;以下我对抽屉(https://dig.chouti.com/)主页进行模拟布局。官方网站效果图&#xff1a;模拟网站图&#xff1a;二、实现步骤1、整体布局(header、body、footer)抽屉的首页主要分为三块&…

10.热空气扭曲效果

Shader "Study/10_Distortion" {Properties{_NoiseTex("絮乱图", 2D) "white" {} // 絮乱图_AreaTex("区域图(Alpha)&#xff1a;白色为显示区域&#xff0c;透明为不显示区域", 2D) "white" {} // 区域图_Move…