UnityShader入门——纹理和透明
一、纹理1.纹理的概念(1)纹理是用来干嘛的 骨:模型骨骼 肉:三角面片(由模型顶点围成模型的轮廓) 皮:纹理图片 纹理的主要作用:使用一张图片来控制模型的外观 使用纹理映射技术,将图片和模型联系起来,让模型能呈现出图片中的颜色表现 纹理映射: 它用来将图像(纹理)映射到三维模型的表面,从而赋予模型更加真实和细致的外观。 这个过程实际上是将二维图像映射到三维空间的过程 (2)如何进行纹理映射? 利用纹理展开技术把纹理映射坐标存储在每个顶点上。模型表面的顶点都与纹理坐标相关联 纹理坐标通常使用二维坐标系统(称为UV坐标),其中U表示水平轴,V表示垂直轴 (3)UV坐标对于Shader开发的意义 我们在进行Shader开发时,在顶点着色器回调函数传入的数据中可以获取到模型中的UV坐标的数据。 有了UV坐标,只要有正确的纹理贴图(图片),就可以用顶点的UV坐标从图片中取出映射的颜色用于渲染。 (4)UV坐标的注意事项 纹理坐标(UV坐标)的横轴和纵轴的取值范围是被归一化过的,在[0,1]的范围中 ...
UnityShader入门——光照
1. 逐顶点光照和逐片元光照(1)逐顶点光照 在哪计算??? 顶点着色器 回调函数中 计算方式: 逐顶点光照会在每个物体的顶点上进行光照计算 这意味着光照计算只在物体的顶点位置上执行 而在顶点之间的内部区域``使用插值来获得颜色信息 优点: 逐顶点光照的计算量较小,通常在移动设备上性能较好,适用于移动游戏等要求性能的场景 缺点: 照明效果可能不够精细,特别是在物体表面上的细节区域,因为颜色插值可能不足以捕捉到细微的照明变化 适用场景: 逐顶点光照适用于需要在有限资源下获得较好性能的场景,例如移动游戏 (2)逐片元光照 在哪计算??? 片元着色器...
Unity_AssetBundle
引言:主要介绍一下AB包的基本原理和打包过程 初步了解AB包AB包是什么?? AB是特定平台的资产压缩包,类似于压缩文件 资产包括: 模型、贴图、预制体、音效等等。 注意:C#代码不能打成AB包。所以代码要用Lua热更。 AB包有什么作用??相对Resource下的资源AB包更好管理资源 减少包的体积大小 压缩资源 减少初始包的大小 打包时候AB可以放在远端,初始包只留一些默认资源。进入游戏之后再慢慢下载。 热更新 资源热更新 脚本热更新 AB包资源打包如何让资源关联AB包 我们把一个场景物体拖成预制体,再inspector窗口就能看到如下内容(其他资源也可以去关联) 第一个标签为:打入哪个包中。 第二个标签为:扩展名(不动就行 ) 这样就把Cube这个物体关联到了model这个包里面 疑问:C#脚本不能打包进去,但是物体上关联的很多组件不也算是脚本吗?为什么可以打包 答:预制体上面的一些组件,看起来是脚本,实际上都是C#通过反射得到的文件信息 ...
UnityShader前置知识
引言:主要为UnityShader中较为基础的部分 一、Shader结构初识1. 属性1Properties{ 属性定义} 2.SubShader12345678910 SubShader// {// //顶点-片段着色器 或 表面着色器 或 固定函数着色器// }// SubShader// {// //更加精简的版本// //目的是适配旧设备// }// .....可以有n个SubShader代码块 3.备用的Shader1Fallback "备用的Shader" 二、Shader的属性1. 属性的作用 1.可以在材质面板被编辑 2.可以在后续当作输入变量提供给所有子着色器使用 2. 属性的基本语法 1_Name("Display Name", type) =...
Unity网络开发基础(二)
内容概况:文件传输FTP,HTTP 一、文件传输FTP1.FTP工作原理(1)FTP是什么?? FTP文件传输协议,是支持Internet文件传输的各种规则所组成的集合。 这些规则使internet用户可以把文件从一台主机上拷贝到另一台主机上。 除此之外,还提供登录、目录查询以及其他会话控制等功能。 解释: FTP文件协议就是一个在网络中上传下载文件的一套规则。 (2)FTP的工作原理 FTP本质: FTP的本质是TCP通信 通过FTP传输文件,双发至少需要建立两个TCP连接。 一个称为控制连接,用于传输FTP命令。 一个称为数据连接,用于传输文件数据。 疑问:为什么不用一个TCP连接?? 区分消息上有困难。如果只有一个通信连接,既要区分FTP命令,又要区分文件包,其实是很困难的。 FTP的数据连接和控制连接方向一般是相反的 举例说明: 用户使用FTP客户端连接FTP服务器请求下载文件 控制连接方向: 客户端主动连接服务器告知其下载命令 数据连接方向: 服务端主动连接客户端下发数据 ...
观察者设计模式(事件中心)
引言:本文主要为介绍基于观察者设计模式的事件中心 事件中心的主要作用举例抛出问题 现在有这么种情况,怪物死亡往往伴随着任务更新、玩家获得奖励、或者其他等等 下面为示例代码 怪物代码: 12345678910111213141516171819202122public class Monster : MonoBehaviour{ // Start is called before the first frame update void Start() { Dead(); } void Dead() { Debug.Log("怪物死亡了"); //其他对象在怪物死亡时想做的事情 //比如 //1.任务更新 GameObject.Find("Task").GetComponent<Task>().TaskWaitMonsterDeadDo(); ...
Unity网络开发前置知识
一、网络开发必备知识点1.线程和线程池(1)回顾——线程 Unity支持多线程 Unity中开启的多线程不能使用主线程中的对象 Unity中开启多线程后一定要关闭,因为它是在unity编辑器生成一个线程,除非关闭编辑器否则不会关闭线程。 12345678Thread t = new Thread(()=>{ while(true){ print("123"); Thread.Sleep(1000); } });t.Start();t.Abort();//关闭线程 (2)线程池 命名空间:System.threading 类名:ThreadPool ...
Unity之Mesh网格
引言: 本笔记为各方资料整理,如有侵权请联系 创建一个简单的网格渲染事物 在 Unity 中,如果你想将某些内容可视化,可以使用网格。它可以是从其他程序导出的 3D 模型,也可以是程序生成的网格,还可以是精灵图、UI 元素或粒子系统,这些 Unity 也使用网格来实现。甚至屏幕效果也使用网格进行渲染。 那么,什么是网格?? 一组3D空间点+一组连接点的三角形(这些三角形构成了网格所代表内容的表面。) 由于三角形是平面的,且边缘笔直,因此它们可以用来完美地呈现平面和直线的物体,例如立方体的面。曲面或圆形表面只能通过使用许多小三角形来近似。如果三角形看起来足够小(不大于一个像素),那么您将无法察觉到这种近似。通常,这对于实时性能来说是不可行的,因此表面总会呈现出某种程度的锯齿状。 图1 Unity默认立方体以及线宽(能看到锯齿) 如何显示线框? 您可以在场景视图的左侧工具栏中选择其显示模式。前三个选项分别是“Shaded”(阴影)、“Wireframe”(线框)和“Shaded...
Shader实战案例
注:本系列为shader实战的精品案例,这些是必须要掌握的 UV扰动之水纹效果 思路:利用噪声图信息偏移主UV图坐标,形成扰动效果。利用_Time平移顶点实现动画效果_,使扭曲纹理看起来在 X 和 Y 方向上滚动。 准备一张水面图,一张噪声图,噪声图可以看老唐shader,会讲如何制作。 效果图: 下面将一些:前置的知识点。 1.什么是噪声 它的本质是一种由数学算法公式生成的有规则性或可控的随机数据。 特性: 随机性:噪声数据本质上是随机的,这意味着它具有不规则性,无法通过简单的模式预测 平滑性:数据不会突然跳跃或变化,而是呈现出逐渐过渡的效果,适合模拟自然现象 周期性:随着坐标的变化,噪声值会重复出现,形成一个封闭的循环。也可以通过调整噪声的范围或修 改算法来避免 可调性:大多数噪声算法的输出是可以调整的,这种可调性允许你根据需求灵活地控制噪声的表现,适 应不同的视觉效果或逻辑处理需求 5....
