自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

傻子是小傲娇的博客(大钊)

不努力,连失败是什么都不知道

  • 博客(112)
  • 资源 (1)
  • 收藏
  • 关注

原创 Unity置灰效果shader,可解决列表mask失效问题

【代码】Unity置灰效果shader,可解决列表mask失效问题。

2023-08-04 10:36:49 317

原创 uv动画shader

【代码】uv动画

2023-03-14 17:22:38 207

原创 渲染管线笔记

什么是渲染?电脑绘图中,是指以软件由模型生成图像的过程数据与资源 -- 渲染管线 -- Rander Target。

2023-03-13 11:24:43 297

原创 Unity 对话系统 文字打字机效果实现

Unity 对话系统 文字打字机效果实现

2022-03-08 17:49:11 4159

原创 Unity Shader学习------GPU渲染流水线详解

GPU流水线即渲染流水线中的几何阶段和光栅化阶段绿色---完全可编程控制黄色---可配置不可编程蓝色---GPU固定实现GPU渲染流水线接受顶点数据作为输入。这些数据是应用阶段加载到显存中,再由DC指定的几何阶段:顶点着色器(Vertex Shader)完全可编程:用于实现顶点的空间变换,顶点着色等功能流水线第一阶段,输入来自于CPU。顶点着色器的处理单位是顶点,...

2020-03-17 21:39:17 446

原创 渲染流水线--应用阶段详解

工作任务:由一个三维场景出发,渲染一张二维图像计算机从一系列的顶点数据,纹理等信息出发,把这些信息最终转换成一张人眼可见的图像。由C、GPU共同完成分为下面三个阶段:应用阶段(CPU):应用主导,开发者在此阶段有绝对控制权此阶段开发者的三个主要任务:(1)准备场景数据摄像机位置、视锥体、场景包含的模型。使用的光源(2)剔除工作(3)设置每个模型的渲染状态...

2020-03-13 14:26:52 413

原创 Unity 实现血条跟随

首先在Canvas中制作一个UI来做为血条的父物体(1)在Canvas下创建空物体改名为DynamicPanel,将其铺满整个屏幕。在DynamicPanel创建空物体命名为ItemHPRoot作为所有血条的父物体(2)在ItemHPRoot下制作血条,制作完后拖入Resources文件中作为预制体,删除ItemHPRoot下的ItemHP(3)给血条添加脚本publi...

2020-02-27 18:41:08 4839

原创 通过Unity Remote便捷进行Unity游戏在手机端的测试

如果使用将游戏打包为APK再去手机上进行测试的方法会使得测试变得非常繁琐,下面是使用Unity Remote进行测试的流程:准备工作:(1)PC端安装Android Studio且下载了Google USB Driver(2)Unity中Editor中进行更改(3)手机端安装了Unity Remote且打开了USB调试下载地址 提取码:lcv5手机连接电脑后...

2020-02-19 22:59:11 1896

原创 追忆往昔,展望未来

现在已是晚上十一点多,一天的学习结束了。 21年过去了,还是头一次在春节假期也能一整天一整天的学习,因为总是想让自己忙起来,害怕一静下来便总会想起那些烦心的事情,但总是躲不过夜深人静的时候。这时呀,总喜欢躲在被子里偷偷的哭,跟我不熟的人总是说我高冷,其实嘛我不过是一个少女心小孩,袜子都是可爱型的那种,哈哈。 今年六月就要毕业了,离开这个满是回忆的地方。大学里的遗憾有很多,总结下来...

2020-01-27 23:39:47 556 1

原创 Unity Shader------实现纹理贴图

将纹理映射到图形上,需要指定每个顶点各自对应纹理的哪个部分,即每个顶点关联一个对应的纹理坐标(Texture Coordinate)来标注从纹理图形的哪个部分采样。使用纹理坐标获取纹理颜色叫做采样。使用纹理颜色代替漫反射颜色来实现纹理贴图。同时给纹理添加偏移和缩放:Offset 控制贴图在x,y方向上的偏移Tiling 控制贴图在x,y方向上的缩放Shader "Cu...

2020-01-26 22:39:47 982

原创 Unity Shader------Blinn-Phong光照模型

之前实现的高光反射采用的是Blinn光照模型Blinn光照模型:Specular=直射光 * pow(max (cosx,0),光照系数)x为反射光和视野方向的夹角更为常用的是Blinn-Phong光照模型Blinn-Phong光照模型:公式同上,x变为法线 和 平行光与视野方向的平分线 的夹角Shader "Custom/Shader04"{ Properties{...

2020-01-26 10:14:56 255

原创 设计模式------桥接模式

桥接模式(Bridge):将抽象部分与实现部分分离,使它们都可以独立地变化。即实现系统可能有多角度分类,每一种分类都可能变化,把多角度分离出来让其独立变化,减少它们之间的耦合。namespace BridgeMode { //抽象实现类 abstract class Implementor { public abstract void Operat...

2020-01-25 20:31:35 117

原创 设计模式------中介者模式

中介者模式(Mediator):用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显示地相互引用,从而使其耦合松散。游戏中的很多系统内部需要互相调用,如果歌系统之间直接调用,逻辑会变得很复杂。采用中介者模式,让中介则负责调用所有的系统,子系统只需要和中介者交互。中介者模式针对模块内部,各个系统之间相互调度。缺点:由于中介者控制了集中化,所以交互的复杂性变为了中介者的复杂性...

2020-01-23 21:19:11 120

原创 设计模式------单例模式

单例模式(Singleton):保证一个类仅有一个实例,并提供一个访问它的全局访问点。namespace DesignMode { class Singleton { private static Singleton instance; //私有化构造方法,防止外界通过new创建实例 private Singleton() { ...

2020-01-21 22:30:29 108 1

原创 设计模式------外观模式

外观模式(Facade):为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。外观模式是针对模块的外部系统使用使用,相当于外观模式把一个系统所有的功能打包好了,提供一些接口给外界来使用这个系统的功能;设计初期阶段:要有意识的将不同的层分离,如经典的三层架构。在数据访问层和业务逻辑层、业务逻辑和表示层之间建立外观Facede。这...

2020-01-21 16:40:08 100

原创 设计模式------状态模式

状态模式:主要解决的是当控制一个对象状态转换的条件表达式复杂时的情况。把状态的判断逻辑转移到表示不同状态的一系列类当中,可以把复杂的判断逻辑简化。当一个对象的行为取决于它的状态,并且它必须在运行时根据状态改变它的行为时,可以考虑使用状态模式。简单实现:namespace StateMode { /// <summary> /// State类,抽象状...

2020-01-20 23:40:25 109

原创 设计模式作用和原则

设计模式:解决同一种类型的问题,使用设计模式可以让代码结构更加清晰。常见的设计原则:开闭原则:对拓展开放,对修改关闭,使得模块可以在不被修改的前提下被扩展,即不修改源代码的情况下改变这个模块的行为,让程序的稳定性增加。总结:面对需求,对程序的改动是通过增加新代码进行的,而不是改变原来的代码依赖倒转原则:高层模块不应该依赖于底层模块,都应该依赖于抽象。抽象不...

2020-01-20 21:40:38 210

原创 Unity Shader------Specular(高光反射)计算

高光反射公式:Specular= 直射光颜色 * pow(max(dot(当前点的反射光方向,当前点到摄像机的方向),0),高光反射参数)逐顶点高光反射:// Upgrade NOTE: replaced '_World2Object' with 'unity_WorldToObject'// Upgrade NOTE: replaced 'mul(UNITY_MATRI...

2020-01-05 19:13:40 2062

原创 Behavior Designer行为树------创建一个行为树

插件下载(提取码:ia9s)下载完成后在Tool中打开插件,点击名为NPC的cube,为其添加一个行为树。可以看到Cube上出现了一个行为树的图片,Inspector面板中多了Behavior Tree的脚本组件。为其添加一个Tasks,Action中的Log,点击Log可以在Behavior中为其命名,在Inspector中为其确定输出的内容,我们的第一个行为树就创建完成了,运行可以在Con...

2020-01-02 23:55:58 341

原创 Unity Shader------漫反射(Diffuse)计算

光照模型:一个公式,用来计算在某个点的光照效果标准光照模型下进入摄像机的光:自发光高光反射漫反射(Diffuse): 直射光颜色 * max(0,cos(光和法线的夹角))Shader "Custom/Shader01"{ SubShader{ Pass{ //定义LightMode以得到unity的内置光照变量 Tags{"LightMode"="For...

2019-12-29 23:36:27 2240 3

原创 Unity Shader------顶点函数和片元函数

顶点和片元函数实现一个白色的效果Shader "Custom/Shader01"{ SubShader{ Pass{ CGPROGRAM // 声明了顶点函数的函数名 #pragma vertex vert //声明了片元函数的函数名 #pragma fragment frag //顶点函数(系统调用) ...

2019-12-29 14:16:59 739

原创 Unity Shader------入门

在场景照片中新建一个3D物体,可以看到物体上都会有Mesh Filter 和 Mesh Render,首先要明白这几个是什么意思Mesh:模型的网格,模型由三角面构成,一个模型中三角形的点面集合就是MeshMesh由顶点坐标数组、顶点在uv坐标系中的位置信息数组,三角形顶点顺时针或者逆时针索引数组、MeshFiler组件MeshRender组件、可能还需要每个顶点的法线的数组等组成M...

2019-12-28 23:39:33 201

原创 Unity性能优化------渲染优化(GPU)之LightMapping(光照贴图)

LightMapping(光照贴图):实时的光照计算是十分消耗性能的,对于一些静态的物体和光源,预计算光照信息存储在贴图中,游戏对象直接使用贴图来模拟灯照射的效果而不用进行实时的光照计算(1)将场景中的物体的static中的LightMap Static勾选上,并将灯光的Mode改为Baked(2)打开Window/Lighting/Settings,点击Generate Light...

2019-12-22 12:29:20 1559

原创 Unity性能优化------渲染优化(GPU)之Occlusion culling(遮挡剔除)

Occlusion culling(遮挡剔除):场景中的物体因被遮挡对于当前摄像机为不可见时,可以不对其进行渲染。要注意与视锥体剔除进行区分,视锥体剔除是不渲染摄像机视锥范围之外的物体,被其它物体遮挡但仍在视锥范围之类的物体不会被剔除。使用遮挡剔除时视锥体剔除依然有效。使用步骤:(1)将要应用剔除遮挡的物体的static中的occluder static勾选(2)打开Window...

2019-12-22 12:29:11 1732

原创 Unity性能优化------渲染优化(GPU)之LOD(Level of detail)

LOD(Level of detail):根据物体模型的节点在显示环境中所处的位置和重要度,决定物体渲染的资源分配,降低非重要物体的面数和细节,获得高效率的渲染运算上图展示了同一个物体的三种模型,从左到右面数和细节依次有所提升创建一个空物体并添加LOD Group组件,为LOD 0-2添加对应的Prefabs,我们从远拉近摄像机就会看到不一样的渲染效果,即在游戏中会根据我们离...

2019-12-22 12:29:00 519

原创 Unity性能优化------DrawCall

什么是Draw CallDraw Call就是CPU通过图形库(Directx/OpenGL)接口,命令GPU进行渲染操作Draw Call是如何影响性能的每一次绘制CPU都要调用DrawCall,调用前CPU要进行很多的准备工作,而GPU本身计算能力强,很快可以完成渲染当DrwaCall过多,CPU的大量时间用于准备工作即提交DrawCall命令,CPU本身负载时GPU就可...

2019-12-22 12:11:46 257

原创 AssetBundle如何打包

AssetBundle是什么?AssetBundle是一个存档文件,包含可运行时加载的特定于平台的资源(模型、纹理、预制体、场景)AssetBundle可以表达彼此之间的依赖关系,AssetBundle A中的材质可以引用AssetBundle B中的纹理为通过网络进行有效传递,可以根据用例要求选用内置算法来压缩(LZMA,LZ4)LZMA算法:压缩的包更小,加载时间更长。使用...

2019-12-19 19:30:14 440

原创 Unity最简洁的对象池实现

当要使用的对象要被多次创建和销毁时,采用对象池将不用的对象存起来而不是Destory,要用时再取出。将两个脚本挂在空物体上,将预制体拖入,点击鼠标左键创建,右键回收。/* 拿出时直接pop并加入此时管理的list并设为可见 放入时需判断当前的list有无元素,有则从当前remove,push并设为不可见*/public class PoolTest : MonoBehaviou...

2019-11-04 20:05:21 142

原创 Unity 鼠标控制第一人称摄像机视角

第一人称摄像机的实现:鼠标的移动时的水平距离将决定摄像机在水平方向上的旋转角度,绕着旋转的轴应该为世界坐标系下的y轴垂直方向上的距离将使摄像机上下旋转,这时候应该绕着自身坐标系下的x轴旋转为什么不是绕着摄像机的x轴(transform.right),自己改了旋转的轴运行一下就知道了public class FirstPersonalCamera : MonoBehaviou...

2019-10-30 10:58:05 3984 1

原创 面向对象封装dfs算法

地图类:#pragma once/*动态地图:row和line都是可变*/class Map{public: //row:行 line:列 date:数据的首地址 Map(int row = 10, int line = 10,int* data = nullptr); ~Map();public: void setData(int* data);//设置数据 /...

2019-10-17 20:05:10 195

原创 c++模拟实现对象池

怪物基类:#pragma once//怪物枚举enum MonsterType{ PMONSTER, MMONSTER, HMONSTER};class Monster{public: virtual void display()=0; Monster() { } virtual ~Monster()//虚析构 { } MonsterType getT...

2019-10-15 23:43:34 157

原创 Direct3D(一)

创建顶点/缓存缩索引HRESULT IDirect3DDevice9::CreateVertexBuffer(UINT Length,DWORD Usage,DWORD FVF,D3DPOOL PoolIDirect3DVertexBuffer9** ppVertexBuffer,HANDLE* pSharedHandle);HRESULT IDirec...

2019-09-28 22:11:04 434

原创 3D相关的简单数学知识

三维坐标系:向量的模:向量起点到终点的距离FLOAT D3DXVec3Length(// Returns the magnitude.CONST D3DXVECTOR3* pV// The vector to compute the length of.);向量标准化(规范化)将向量的长度缩放至1D3DXVECTOR3 *D3DXVec3Normalize...

2019-09-28 22:09:52 332

原创 《剑指Offer》剪绳子

题目描述给你一根长度为n的绳子,请把绳子剪成m段(m、n都是整数,n>1并且m>1),每段绳子的长度记为k[0],k[1],...,k[m]。请问k[0]xk[1]x...xk[m]可能的最大乘积是多少?例如,当绳子的长度是8时,我们把它剪成长度分别为2、3、3的三段,此时得到的最大乘积是18乘法计算,除了一以外,越多的数相乘结果越大从2开始考虑,如果用2分段,存...

2019-09-24 09:33:50 93

原创 魔塔项目中的问题解决

地图数据读取:void Map::init_map(){//初始化地图 /*当前关卡*/ current_index = 0; /*位置地图*/ memset(pos_map, 0, sizeof(pos_map)); /*地图文件读取*/ FILE *fp; fp = fopen("map_data.txt", "r"); if (fp == NULL)cout &l...

2019-09-24 08:27:42 292

原创 lua学习笔记

lua头插法实现链表:https://paste.ubuntu.com/p/9qSnShCtz9/lua尾插法实现链表:https://paste.ubuntu.com/p/RqdwCjb4vp/lua面向对象实现:https://paste.ubuntu.com/p/B5HW6HKCyS/...

2019-09-19 09:23:58 110

原创 《剑指Offer》两个链表的第一个公共结点

题目描述输入两个链表,找出它们的第一个公共结点。长度相同有公共结点,第一次就遍历到;没有公共结点,走到尾部NULL相遇,返回NULL长度不同有公共结点,第一遍差值就出来了,第二遍一起到公共结点;没有公共,第二次一起到结尾NUL/*struct ListNode { int val; struct ListNode *next; ListNode(int x...

2019-09-10 10:05:43 85

原创 《剑指Offer》数组中的逆序对

这几天烦心的事一直来,真不知道该怎样才好,一个归并排序求逆序对也能从昨晚卡到现在,反正也睡不着,debug到凌晨,今早才发现一个传参数的问题,应该传引用。改了还是过不了,想了半天才想到数据溢出的问题,归并过程中也可能溢出的。希望一切都会好起来,哎。题目描述在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数P。并...

2019-09-02 09:24:27 111

原创 《终身成长》读书笔记(一)

如何面对失败?要不仅不会因失败而气馁,反而认为自己没有失败,是在学习。为什么人会有不同?物理上的差异确实存在,但基因和环境不仅仅是相互协作的关系,基因需要环境的帮助来更好的运作。你所采取的观点会对你自己的生活方式产生深远的影响,你的基本能力是可以通过你的努力来培养的。即使先天会有各种不同,都可以通过努力和个人经历来改变和成长。当你有时间提升自己的时候,为什么要浪费时间去证明自己的杰出...

2019-08-30 09:35:10 414

原创 C++类的作业

1,实现一个猎人类,实现两个行为,一个是打兔子,显示当前他的猎物的数量,要求所有函数用内联函数实现。内联函数:关键字inliine修饰的函数,inline必须与函数定义放在一起作用:以代码膨胀为代价,空间换时间,编译时在调用处用函数体进行替换,节省了参数传递,控制转移等开销需要注意的地方:(1)函数体内不能有循环和switch语句(2)代码不能过长(3)递归函数不能定义成...

2019-08-14 23:56:53 310

《魔塔》游戏c++源代码

《魔塔》游戏的源代码,实现了一些基本的功能,如三种类型的门与钥匙,蓝宝石红宝石,商人,三种怪物等,可以自己去定义相关的属性和修改地图。

2019-08-02

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除