光照与光照模型
前言
对应 《Games101》
07 着色(光照与基本着色模型)
13 光线追踪(基本原理)
《 Unity Shader 精要》
06 Unity中的基础光照
6.1模拟光照模拟真实光照环境来生成一张图像,需要考虑3种物理现象
首先,光线从光源射出
然后,光线和场景中的物体相交:一些被吸收,一些被散射到其他地方。
最后,摄像机吸收了一些光,产生一张图像。
在本章中,假设漫反射部分没有方向性,光线在所有方向上是平均分布的。同时,只考虑一个特定方向上的高光反射。
6.1.1 辐照度辐照度(irradiance):垂直于I的单位面积上单位时间穿过的能量
一般来说,光照都不会和平面垂直,因此需要使用光源方向和表面法线之间的夹角cos余弦值得到照射面积。
6.1.2 吸收和散射散射(scattering)和吸收(absorption)
散射只会改变光线的方向,而不改变光线的密度和颜色。
吸收只会改变光线的密度和颜色,而不会改变光线的方向。
折射(refraction)或 透射(transmission)
光线在物体表面经过散射后,会散射到内部,称之为 ...
建模入门Blender(持续更新)
基本操作物体模式6物体模式和编辑模式下的 合并与分离物体模式:
“CTRL+J”:“join”。合并选中的多个物体。合并后的轴心在最后选中物体的轴心。
Ctrl 1 2 平滑模式数字
编辑模式编辑模式基本操作“TAB键”:切换编辑模式/物体模式。
“CTRL+TAB键”: 切换顶点/边/面。
“A键”: 全选或者取消全选。
“SHIFT+鼠标左键”:多选点线面
挤出(在编辑模式下)“E键”:选中点,线,面都可以挤出,但一般主要对面操作。
挤出时右键取消实际上还是挤出了,只不过重叠在原有位置
沿法向挤出
挤出各个面
挤出到游标
环切左键确定后可以按“S键”然后移动坐标轴进行缩放环切线。缩放时可以直接输入缩放倍数,在左下角有显示缩放当前倍数。
内插面“I键”
倒角选中边,按“CTRL+B”进行倒角,此时可以滚动滚轮增加倒角边。
环切环切 :”CTRL+ R” 按鼠标右键后环切线置于中间位置
多根环切线:”CTRL+ R 之后再滑动滚轮
切割工具k键
平分工具几何体切开
桥接多边形建形Ctrl 建立三角形
旋绕工具平滑平滑 不会切分面
随机 随机面
滑移边线顶点滑移
法向缩放 ...
源码角度分析Rebuild和Rebatch
前言在 Unity 中,Rebuild 和 Rebatch 是优化 UI 渲染性能的重要概念。了解它们的原理可以帮助开发者优化游戏的性能,尤其是在使用 Unity 的 UI 系统时。
Rebuild什么是Rebuild当发生一些脏标记的行为时,被标记为脏的对象需要进行重新计算或渲染
图形组件Rebuild在渲染Canvas前一帧,会去判断Graphic是否被标记为脏标记,如果是顶点脏标记就会去重建网格,如果是材质被标记为脏那么就会去重建材质
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364//重建方法public virtual void Rebuild(CanvasUpdate update){ if (canvasRenderer == null || canvasRenderer.cull) return; switch (update) { ...
OverDraw
UGUI优化 OverDrawUnity基础:性能杀手Overdraw详解 - 知乎 (zhihu.com)
Overdraw介绍 Overdraw是指屏幕上的某个像素在同一帧的时间内被绘制了多次。
3.2 Overdraw影响什么
过多Overdraw可能会引起GPU过载,影响动画的播放和界面响应速度。
3.3 降低Overdraw
1.将Mask(自带两层Overdraw)替换为RectMask2D(自带一层Overdraw)
2.全屏遮挡的情况,则为被遮挡的canvas添加CanvasGroup 组件,然后在被挡住时将其alpha值设为0,不参与绘制,没有 DrawCall也没有Overdraw,同时顶点也不会参与重绘。
3.unity的文字显示中自带阴影组件shadow/Outline减少使用,自带overcall。
4.UI摆放,减少UI的叠加效果。
5.将不想显示的物体直接禁用,而不是将其透明度改为0,仍会产生overcall。
如何降低OverDraw减少不透明OverDraw与流行的游戏开发理念 ...
unity 优化资源加载相关
场景优化Unity3D场景性能优化/渲染/卡顿/搭建优化 遮挡剔除/层消距离技术/LOD(多层次细节)_u3d5.6的遮挡剔除-CSDN博客
遮挡剔除(Occlusion Culling)Unity 中的遮挡剔除 Occlusion Culling 是一种性能优化技术,它可以帮助开发者减少需要渲染的场景物体数量,从而提高游戏的帧率和流畅度。遮挡剔除的基本思路是在运行时计算场景中哪些物体被遮挡而不需要被渲染,哪些物体是可见的需要被渲染。这样可以减少渲染所需的时间和开销,提高游戏性能。
Unity 中的遮挡剔除主要有两种方式:静态遮挡剔除和动态遮挡剔除。
静态遮挡剔除(Static Occlusion Culling)
是在场景构建时进行的,主要是通过 Unity 自带的预处理工具将场景物体分成一些区域,然后计算这些区域之间的遮挡关系。这种方式适用于静态场景和场景中的大部分物体都是静态的情况。静态遮挡剔除的优点是计算量小,不会对游戏运行时的性能造成太大影响。
动态遮挡剔除(Dynamic Occlusion Culling)
则是在游戏运行时进行的,主要是通过摄像机视野和场景中物体之 ...
unity Bulid-in 渲染管线
图形渲染管线图形渲染管线(Graphics Rendering Pipeline) - 知乎 (zhihu.com)
图形渲染管线是图形学知识考察最重要的一个问题,绝对是最高频的,必须掌握。问法有很多种,比如屏幕中一个像素是怎么绘制出来的,绘制出一幅图像的具体过程等。此外还有GPU渲染管线的问法,其实就是省去CPU阶段,直接从GPU阶段开始回答就行了,是一个意思。
什么是渲染管线图形渲染管线实际上指的是一堆原始图形数据途经一个输送管道,期间经过各种变化处理最终出现在屏幕的过程,在概念上可以将图形渲染管线分为四个阶段:
应用程序阶段、几何阶段、光栅化阶段和像素处理阶段。
调用Render()摄像机对象调用一个Render()
如同摄像机一样 调用渲染api 通知cpu开始渲染流程
CPU渲染管线-应用程序阶段剔除
剔除:视椎剔除、遮挡剔除、层级等规则
视椎体剔除
层级剔除 遮挡剔除
渲染顺序-排序渲染顺序:按距离、渲染队列等规则
渲染管线 Render Queue
不透明队列 (Render Queue<2500) ...
关于游戏物理实现
https://blog.51cto.com/u_15273495/5040568
在游戏开发中,有时你可能希望不使用物理引擎来实现一些物理效果。可以通过手动编写代码来模拟这些效果,以下是一些常见方法和示例代码:
1. 运动学公式使用基本的运动学公式来模拟物体的运动。假设你有一个物体,它的初始位置、速度和加速度是已知的,你可以使用以下公式来计算它的新位置和速度:
位置更新公式:position = position + velocity * deltaTime + 0.5 * acceleration * deltaTime^2
速度更新公式:velocity = velocity + acceleration * deltaTime\
2.手动检测碰撞https://blog.csdn.net/yhn19951008/article/details/119899092
通过编写代码来检测物体之间的碰撞。以下是一个简单的 AABB (Axis-Aligned Bounding Box) 碰撞检测示例:
1234bool IsColliding(Rect a, Rect b) ...
Windows 命令
应用程序
指令
描述
Calc
小算盘
Explorer
文件资源管理器
Notepad
记事本
osk
屏幕键盘
管理工具
指令
描述
CleanMgr
磁盘清理
cmd
命令提示符
FsMgmt.msc
共享文件夹
GpEdit.msc
本地组策略
mrt
恶意软件删除工具
MsTsc
远程桌面
PowerShell
命令提示符
RegEdit
注册表编辑器
ResMon
资源监视器
sdclt
备份与还原 (Windows 7)
TaskMgr
任务管理器
TaskSchd.msc
任务计划程序
WinVer
关于 Windows
控制面板
指令
描述
AppWiz.cpl
卸载或更改程序
CompMgmt.msc
计算机管理
control
控制面板
DevMgmt.msc
设备管理器
DiskMgmt.msc
磁盘管理
DxDiag
DirectX 诊断工具
HdwWiz.cpl
设备管理器
MsInfo32
系统信息
NetplWiz
用户帐户
...
C++ 之STL
https://github.com/huihut/interview?tab=readme-ov-file#problems
STL
STL的六大部件和联系
STL容器知道哪些,都解释一下,原理是什么,实现一下链表(接下来就可能考察算法题了)
map,multmap,set,multset的原理(接下来会考察二叉树相关的题,我后面会介绍)
hashtable的作用与原理
操作符重载问题
前置++与后置++的区别,操作符重载的角度分析源码实现
函数模板(泛化和特化的问题),什么是全特化和偏特化
STL中常见的算法用过哪些,原理是什么(随机数,查找等)以上问题出现的频率最高,大厂基本必问,所以你需要必会。 答案均在侯捷老师的视频中。
STL的六大部件和联系STL(Standard Template Library,标准模板库)由六大组件组成:
容器(Containers)
算法(Algorithms)
迭代器(Iterators)
函数对象(Functors)
适配器(Adapters)
分配器(Allocators)
STL底层实现
vector底层是一块具有连续内存的数组,ve ...