2021年规划
每年需持续整理个人任务,个人任务可以规划为年度任务,月任务,详细再到周任务记录个人任务完成情况,如未完成,需写下原因以检讨在工作空闲时间,假期,周末等时期完成的任务
年度任务规划
任务描述
完成情况(%)
注释
客户端方向
EGameTang框架深度学习,掌握EGameTang网络架构原理并制作联机RPGDemo|10%|目前已掌握基础使用GameFramework框架深度学习,学习其代码规范,底层原理,架构思想|50%|目前以运用于项目中Ability技能系统搭建完成,并完成多个模式的Demo|50%|技能系统已搭建,准备Demo即可AI行为系统的深度学习,主要参考UE4 AI系统|10%|掌握基本使用AssetBundle,Addressable的深度学习|80%|战斗系统||UE系统学习||
TA方向||Game101 计算机图形学入门|50%|看完教程后总结OpenGL,看完书籍红皮书,蓝皮书|10%|3D数学基础,总结提炼|50%|UnityShader,光照GI,渲染管线|20%|Unity实现天气系统,下雨打雷,下雪,风|0%|Unity草地|50 ...
URP效果实现,从基础慢慢深入
介绍之前学习过入门精要,之后就很少接触了,现在接触URP,再学习一遍入门精要也顺便学习下HLSL,主要是对着链接中的URP HLSL入门学习进行学习,会有一定自己的扩展
基础光照模型基础公式
Lambert: max(0,dot(L,N))
HalfLambert: max(0,dot(L,N)) * 0.5 + 0.5
Phong: pow(max(0,dot(reflect(-L,N), V)), Gloss)
BlinnPhong: pow(max(0,dot(normalize(L+V), N)), Gloss)
代码
Lambert / HalfLambert
/ HalfLambert12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970Shader "Unlit/Lambert"{ Properti ...
Unity 开发一些记录
XLua开发的一些问题记录
C#枚举在lua中转Int:CS.System.Convert.ChangeType()
泛型函数使用:xlua.get_generic_method(instance, “func_name”); //成员函数传实例,静态函数传类型
RawImage使用扩展前言使用通用管理器UIModelManager,方便RawImage,RT加载卸载,以及RawImage与模型交互
基础思路
对应每一张RawImage,由于显示不同都需要不同的Camera以及RT,将Camera.targetTexture设置成RT
模型加载卸载走项目通用方式
交互问题:在UI上我们只能点击这个RawImage,如果RawImage中只显示一个模型,那我们可以直接在UI上监听拖拽修改这个模型的旋转或者其他操作但是这样做非常不友好,并不能精确的知道是否点中了这张RT上的模型,扩展一下改成世界坐标射线检测,这样不管RT上有多少模型都可以做交互
整理一下交互中射线检测计算思路:(1) 拿到点击位置计算其在RawImage中的偏移值(2) 将偏移值运算在相机的实际渲染高宽上(3) 怎么获得 ...
C# Task用法记录
链接超详细: https://www.cnblogs.com/zhaoshujie/p/11082753.html官方: https://docs.microsoft.com/en-us/dotnet/api/system.threading.tasks.task?view=netcore-3.1
基础ThreadPool相比Thread来说具备了很多优势,但是ThreadPool却又存在一些使用上的不方便。比如:
ThreadPool不支持线程的取消、完成、失败通知等交互性操作;
ThreadPool不支持线程执行的先后次序;
使用方式:
函数标记async,则执行这个函数会启用一个线程12345678910111213public static async Task Test(){ await Task.Run(() => { // Just loop. int ctr = 0; for (ctr = 0; ctr <= 1000000; ...
C# Thread记录
链接精简详细: https://www.cnblogs.com/luxiaoxun/p/3280146.html官网: https://docs.microsoft.com/en-us/dotnet/api/system.threading.thread?redirectedfrom=MSDN&view=net-5.0Event用法: https://www.cnblogs.com/chenwolong/p/AutoResetEvent.htmlSemaphore用法: https://www.cnblogs.com/yifengjianbai/p/5468449.htmlMutex用法: https://www.cnblogs.com/nele/p/5534580.html
基础
进程与线程:进程作为操作系统执行程序的基本单位,拥有应用程序的资源,进程包含线程,进程的资源被线程共享,线程不拥有资源。
前台线程和后台线程:通过Thread类新建线程默认为前台线程。当所有前台线程关闭时,所有的后台线程也会被直接终止,不会抛出异常。
普通ThreadThread t1 = ne ...
URP学习汇总
新建URP项目,Unity默认测试场景查看变化CameraCamera 基础设置解释
相机堆叠:RenderTypeCamera 特殊功能列举
分屏相机两个Camera,RenderType都设置成Base,设置ViewportRect即可相机分屏
Post-process Volume后处理盒子
添加Volume123456789101112131415namespace UnityEngine.Rendering.Universal{ [SerializeField, VolumeComponentMenu("Mypost/ScreenSpacePlaneReflect")] public class ScreenSpacePlaneReflection : VolumeComponent { public BoolParameter on = new BoolParameter(false); public ClampedIntParameter RTsize = ...
ComputeShader学习
基础
Compute Shaders是在GPU运行却又在普通渲染管线之外的程序。用于运行GPGPU program。
平行算法被拆分成很多线程组,而线程组包含很多线程。例如一个线程处理一个像素点,而一定要注意这种处理是无序的随机的,并不一定是固定的处理顺序,例如不一定是从左到右挨个处理像素点。
线程组A Thread Group 运行在一个GPU单元 (A single multiprocesser),如果GPU有16个multiprocesser,那么程序至少要分成16个 Thread Group使得每个multiprocesser都参与计算。组之间不分享内存。
线程一个线程组包含n个线程,每32个thread称为一个warp(nvidia:warp=32 ,ati:wavefront=64,因此未来此数字可能会更高)。从效率考虑,一个线程组包含的线程数最好的warp的倍数,256是一个比较合适的数字。
语法
numthreads中定义单个线程组,这个线程组为三维线程矩阵881个线程
在外面调用computeShader.Dispath(2,2,1),表示定义221个线程组
S ...
URP 后处理效果实现
Blur 模糊URPLearn/Blur
基础概念图形处理中有一个基础概念: 卷积核(kernel).kernel是矩阵形式的存在,一个3x3的kernel,3称作KernelSize,将其作用与(x,y)位置的像素,等效于采集(x,y)周围3x3范围的像素值,分别与a ~ i进行加权平均运算。不同的模糊算法,实质上就是取不同的卷积核。
Box Blur 均值模糊均值模糊。 即取指定大小(size * size)范围内的像素,相加后取平均值。
性能:n * n123456789101112half4 BoxBlur(Texture2D tex, float2 pixelCoord, float halfKernelSize){ half4 color = half4(0,0,0,1); int kernelSize = 2 * halfKernelSize + 1; float weight = rcp(kernelSize * kernelSize); for(int i = -halfKernelSize ...