自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(16)
  • 收藏
  • 关注

原创 shadowmap的原理与实现

最近在预研一个pbr模型的时候接触到了阴影渲染的部分,因为之前一直用的是Unity内置的宏去生成阴影,并且需要用到平行光。对于阴影的制作有各种各样的办法,而shadowmap就是最典型生成阴影的一种方法,在Unity内部也是用shadowmap的变种 **CSM(Cascaded Shadowmap)和SSSM(Screen Space Shadowmap)**的两种阴影。在Unity内部如果目标平台不支持SSSM的话,它会转为CSM的阴影。下面就简单说一下shadowmap的原理和实现过程。shadow

2021-09-01 16:44:00 5062

原创 卡通渲染小结

最近接触了一段时间的卡渲,也制作了相应比较典型的两个demo,接下来便好好总结一下对卡通渲染的一些理解和心得。接下来先放上思维导图,让自己有一个清晰的思路去一步步总结。我把卡通渲染分为了三个部分,其中最核心的两个部分是描边和着色,这是非写实主义(NPR)区别于写实主义最重要的的特点,其次最后在罗列了卡通渲染的几个比较重要的渲染类型分支,接下来便一一介绍。...

2021-08-06 20:57:32 2731

原创 水体渲染小结

最近接触了水体渲染,发现水体渲染这一块所涉及到的知识非常的多,所以这里就来总结一下大概有的知识点,并展示一下一些粗略的水体效果。因为水体渲染实在是太多,因为考虑到开发环境是移动端,一切都以性能为主而去尽量还原水体,我通过XMIND编写了一个思维导图,下面先展现水体渲染的一个大致的思路。简单概括水体渲染可以分为两大块,分别是水体着色和水体动画,因为本demo是使用一块面片来模拟水体,所以一些比较复杂的效果会比较难以实现,毕竟考虑到移动端的性能问题,而且在里面也有很多细分的技术,下面便一一介绍。1.反射

2021-07-26 10:40:30 2320 1

原创 视差贴图的拓展

视差映射技术在我的上一篇文章里,有提到过基本的高度图的使用。具体的原理这里也不多解释,具体可以看回 基于物理的渲染PBR(三):视差贴图。而上一篇文章里介绍的,只是最基本的视差映射,其实它得到的采样点并不是百分百正确的。虽然Unity自带的视差处理是基础的近似值,但是通过查阅资料,我们可以更加精确的得到采样点,下面一一介绍几种视差映射算法。陡峭视差映射该方法的核心是把表面深度切分成等距的若干层,然后通过以视角方向为参考,比较自己定义的表面深度和实际的高度图。当表面深度大于高度图时,证明还没到实际的视角

2021-07-01 20:26:32 247

原创 基于物理的渲染PBR(三):视差贴图

视差贴图在Unity自带的Standard着色器里,我们看到有一个叫高度图的参数,为了完善我的PBR,我也想加入其中,但网上关于高度贴图的代码非常的少,大多都是讲解如何使用而没有详细的介绍代码。经过查阅资料和翻阅Unity的源码,大概记录一下自己的见解。首先,高度贴图也可以称为视差贴图(Parallax Map),法线贴图我们都知道,我们通过采样法线贴图,得到对应的法线,而形成视觉上的凹凸感。而对于视差贴图,我们一般是作为得到它的高度值来使用,它通常是一张灰度图,并且会与法线贴图一同使用,表现出一个更好

2021-06-30 17:18:12 465 2

原创 基于物理的渲染PBR(二):挑战手写pbr和IBL环境光部分的见解

手写PBR在又经过一个星期左右的学习下,我对PBR的了解也有了一定的进展,所以我尝试了一下手写一套较为基础的pbr,不过对比于Unity自带的Standard来说,自己所写的肯定是略显粗糙的。Unity平台自带的pbr里处理了很多更细节的东西,诸如平台问题、优化问题、贴图烘焙问题等等,下面便简单说说自己写的一套pbr,记录一下。首先,我们先回顾一下在第一章的时候,我们提到了一个反射方程,里面的BRDF函数是基于物理来计算的,具体的公式这里就不多阐述了,这里提供了链接方便回忆。我们把需要计算的光源分为三

2021-06-17 14:21:02 1863 2

原创 基于物理的渲染PBR(一):pbr的基础理论和推导

初始PBR最近刚接触pbr不久,我搜寻了许多文章进行阅读并了解后发现,pbr涉及到的知识点繁琐且不容易理解,所以想在博客上给自己记录并总结一下,方便以后回顾并加深记忆。这里首先借用知乎上的大佬毛星云关于pbr所涉及到的知识要点:下面就整理下自己的知识点一. PBR的基本介绍1.1 PBR的概念PBR是Physically based rendering的缩写,直译的意思就是基于物理的渲染,即利用真实世界的规律和理论,使用数学和物理的相关知识和公式推导出一系列渲染的方程,近似的模拟真实世界。这里

2021-06-08 21:00:19 2739 3

原创 C#.NET里面抽象类和接口有什么区别

1.面向接口编程和面向对象编程是什么关系首先,面向接口编程和面向对象编程并不是平级的,它并不是比面向对象编程更先进的一种独立的编程思想,而是附属于面向对象思想体系,属于其一部分。或者说,它是面向对象编程体系中的思想精髓之一。2.接口的本质接口,在表面上是由几个没有主体代码的方法定义组成的集合体,有唯一的名称,可以被类或其他接口所实现(或者也可以说继承)。它在形式上可能是如下的样子:interface InterfaceName{ void Method1(); void Metho

2021-02-04 12:14:08 121

原创 Unity3d Action类和Func类

Action类和Func类在C#中,我们接触到了委托,该类型可以让我们实现许多不同的功能,包括回调函数,消息分发等功能,但每次建立委托都需要定义,稍微会变得有点麻烦,这里介绍一下Unity引擎为我们提供的两种封装好的类型Action和Func。Action类该类使用方法和委托一样,下面给出例子:无参数的Actionpublic void printHello() { } void Main(string[] args) { Action a =

2021-01-28 17:37:02 3384 1

原创 Unity UI框架的搭建

为什么要使用UI框架呢?在我刚使用Unity开发UI界面时,根本没想过用什么UI框架,都是想到要什么界面就通过UGUI拖动什么界面。如果需要实现交互功能,就会绑定对应的监听函数,这样的做法固然是非常的简单直接,但是也会留下一定的弊端。当你的项目不在简单时,UI界面和控件越来越多时,你有时候会找不到哪个对象和哪个对象关联,要是团队合作的话,别人找你的UI接口更是找半天,耦合度非常之高,经常会牵一发而动全身,代码混乱,所以这个时候有一个好的UI框架,会更便于我们整合和使用UI。设计UI框架的要点1.设

2021-01-06 12:22:33 1481

原创 Unity 委托带参数时的小bug

今天使用委托给按钮批量添加监听时,发现了一个bug。下面是伪代码:for (int i = 1; i < btn_weapon.Length; ++i) { btn_weapon[i].onClick.AddListener(delegate () { choose(i); }); } private void choose(int temp){ }如果是这样编写的话,委托传进来的参数temp将会越界,经检测输出

2021-01-04 10:54:53 187 3

原创 Unity3d 内存管理那些事

Unity中的内存种类实际上Unity游戏使用的内存一共有三种:程序代码、托管堆(Managed Heap)以及本机堆(Native Heap)。程序代码包括了所有的Unity引擎,使用的库,以及你所写的所有的游戏代码。在编译后,得到的运行文件将会被加载到设备中执行,并占用一定内存。这部分内存实际上是没有办法去“管理”的,它们将在内存中从一开始到最后一直存在。一个空的Unity默认场景,什么代码都不放,在iOS设备上占用内存应该在17MB左右,而加上一些自己的代码很容易就飙到20MB左右。想要减少这部分

2020-12-30 20:47:09 244

原创 Unity3D 动态加载资源方式

在Unity3d游戏开发中,我们经常需要频繁创建物体,而其中的资源读取就是个问题。其中Unity为我们资源读取提供了几种基本方法,总的来说分为从内部读取和从外部读取。1.Resources.Load()该方法是从项目资源的Resources文件夹进行读取,为内部读取的方法。在项目打包时,Resources文件夹的所有资源会被压缩并加密,并打包进APK中,该文件为只读类型。建议只把需要的预制体打包进去,因为不需要的资源如果放进该文件夹会一起打包出去,造成空间的浪费。在路径参数上,参数默认为Resource

2020-12-30 18:21:37 902

原创 Unity3D中的yield return

原文地址: https://blog.csdn.net/zzmkljd/article/details/51494112

2020-10-24 23:32:05 168

原创 两种同步模式:状态同步和帧同步

转载自知乎: 两种同步模式:状态同步和帧同步.一、同步所谓同步,就是要多个客户端表现效果是一致的,例如我们玩王者荣耀的时候,需要十个玩家的屏幕显示的英雄位置完全相同、技能释放角度、释放时间完全相同,这个就是同步。就好像很多个人一起跳街舞齐舞,每个人的动作都要保持一致。而对于大多数游戏,不仅客户端的表现要一致,而且需要客户端和服务端的数据是一致的。所以,同步是一个网络游戏概念,只有网络游戏才需要同步,而单机游戏是不需要同步的。二、状态同步和帧同步的区别最大的区别就是战斗核心逻辑写在哪,状态同步的战斗逻

2020-09-14 16:41:17 584

原创 C#中的委托

C#委托中的委托C#中的委托和事件在.NET Framework中的应用非常广泛,然而,较好地理解委托和事件对很多接触C#时间不长的人来说并不容易。委托的概念我们可以把委托理解为一种类,在C++或是Java中经常会创建类,里面会有数据和方法,而委托则可以理解为只有方法的类,也可以理解为类型安全的指向函数的指针。委托的使用1.首先声明一个委托的类,委托的关键字为delegate如何改变文本的样式强调文本 强调文本加粗文本 加粗文本标记文本删除文本引用文本H2O is是液体。210

2020-09-13 00:52:24 233

空空如也

空空如也

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

TA关注的人

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