- 博客(332)
- 资源 (3)
- 收藏
- 关注
原创 Unity图形学之BRDF双向反射分布函数
2.各向异性 与 均向性 相反,是指在不同方向具有不同行为的性质,也就是其行为与方向有关,如在物理上,沿着材料做不同方向的量测,若会出现不同行为,通常称该材料具有某种“各向异性”,这样的材料表面称为各向异性表面。1.描述了入射光线在非透明物体表面如何进行反射,也就是说多少光发生了漫反射,多少光发生了镜面反射。BRDF 函数计算的是“特定反射方向的光强与入射光强的比例”3.分布函数:光在表面是怎么分布的。
2024-11-26 17:16:25
375
原创 Unity图形学之折射
3.折射的计算实现公式:看折射率多大 EtaRatio: 折射率。2.反射的计算实现:入射角I- 2倍的N * 点乘(N,I)
2024-11-26 17:07:17
416
原创 Unity图形学之CubeMap立方体贴图
3.真反射:立方体上直接反映场景中的所有渲染的东西,都反射显示到cube上了,非常 消耗性能。(2)Cube的采样:利用反射角采样,反射角X和Cube的交点采样。1.CubeMap:有六个面的贴图组成。2. 假反射:反射天空盒子。
2024-11-22 09:43:25
582
原创 Unity图形学之法线贴图原理
3.法线贴图为蓝色:是因为法线经常是朝向Z轴的,法线倾向 Z值 ,Z值映射到贴图里面,对应的是RGBA中的B值,所以呈现蓝色。1.正常贴图:RGBA 4通道 每个通道取值范围 0-255 贴图里面取值是 0-1。2.法线贴图:法线怎么存入正常贴图的过程。4.法线贴图从哪里来?5.法线贴图的作用?
2024-11-22 09:39:26
682
原创 Unity图形学之灯光的原理
5.在3D世界中,任何一个物体都不是单一的,漫反射或者镜面反射,都是由两者组合而成的。(2)漫反射 颜色计算公式:Dot(L,N) * 灯光的颜色 * 灯光的衰减 (模拟漫反射的过程)(1)漫反射:Dot(L,N) L 点乘 N : = |L| * |N| * cosQ。8.终级公式:镜面反射的颜色 + 漫反射的颜色 + 自发光+ 环境光。镜面发射颜色计算公式:镜面反射 * 灯光颜色 * 灯光的衰减值。(1)漫反射 跟灯光的入射角有关系。(1)从360度看 颜色是一样的。R:代表灯光的反射角。
2024-11-21 10:20:28
1063
原创 Unity图形学之着色器之间传递参数
2.顶点着色器 和片段着色器 的运算次数不是一个量级的,能放在顶点着色器里面运算的,尽量放在顶点里面运算。3.abs(v.naormal) : 法线取值是 -1到 1 ,所以abs是取绝对值 (0-1)Type: struct 名字。Name :变量的名字。
2024-11-21 10:16:12
405
原创 Unity图形学之Shader顶点变化
1.Unity3D 5.0 以后:Pass被隐藏起来,通过调节SurfaceOutputStandard 和 SurfaceOutputStandardSpecular的参数 就能出现比较好的效果。(4)Finalcolor: 计算雾 最后一次计算像素 的入口函数。(2)Surf:Surface 入口函数 可以看成是 片段着色器。(1)Vertex:定义 顶点着色器的入口函数。(3)Lambert:定义 灯光作用的入口函数。3.Inout:表示即是 输入也是 输出。Float:精度是32。
2024-11-20 10:54:43
383
原创 Unity图形学之Surface Shader结构
1.没有Pass:因为Render Path已经封装好了。3.Unity 5.0以前:自定义灯光效果。
2024-11-20 10:51:36
314
原创 Unity图形学之RenderPath
在灯光设置里,设置渲染模式是Not Important 这会被识别 逐顶点 sh 球形灯光;方向光和设置为Important的灯光通常都是逐像素 灯光。
2024-11-18 10:03:51
506
原创 Unity图形学之RenderQueue
4.Geometry: 对应数值为 2000, 用于不透明的物体。这个是默认的选项(如果不指明 Queue 标签的值,自动给你指定为 Geometry)。5.Transparent: 对应的数值为 3000, 用于需要使用 alpha blending 的对象,比如粒子,玻璃等。2.unity查看渲染顺序:FrameDebugger,默认先渲染cube,然后渲染skybox。1.指定物体的渲染顺序。
2024-11-18 10:00:23
558
原创 Unity图形学之Blend指令
BlendOp : 指定 将要渲染像素 和 gbuffer 里面的像素 逻辑运算。1.渲染流程:Blend 决定了要渲染的像素和Gbuffer里像素到底怎么取舍。当这个指令 存在 ,Blend 这个指令 就会被忽略。
2024-11-15 10:50:05
407
原创 Unity图形学之Shader2.0 深度测试
6.测试第三种情况:当ZWrite为Off时,ZTest不通过时,该像素的深度不能成功写入深度缓存,同时因为ZTest不通过,该像素的颜色值不会写入颜色缓存。4.测试第一种情况:当ZWrite为On时,ZTest通过时,该像素的深度才能成功写入深度缓存,同时因为ZTest通过了,该像素的颜色值也会写入颜色缓存。5.测试第二种情况:当ZWrite为On时,ZTest不通过时,该像素的深度不能成功写入深度缓存,同时因为ZTest不通过,该像素的颜色值不会写入颜色缓存。
2024-11-15 10:41:34
528
原创 Unity图形学之Shader2.0 模板测试
(2)readMask:从字面意思的理解就是读遮罩,readMask将和referenceValue以及stencilBufferValue 进行按位与(&)操作,readMask的取值范围也是 0-255 的整数,默认值为255,二进制位11111111,即读取的时候不对referenceValue和stencilBufferValue 产生效果,读取的还是原始值。(4)stencilBufferValue:Gbuffer里面存的模版值。1.模版测试:符合条件的 通过 不符合条件的 像素 丢弃。
2024-11-13 11:27:29
555
原创 Unity图形学之Shader2.0 Alpha测试
4.Shader2.0版本:AlphaTest关键字在Shader2.0中不生效。2.Alpha 测试:符合条件的 Alpha 像素显示出来,不符合的丢弃掉。
2024-11-13 11:24:08
341
原创 Unity图形学之Shader2.0 Blurning
(1)引擎 渲染后最终的结构 是一张图片:OnRenderImage是脚本生命周期函数。1.屏幕后期特效:场景渲染完以后 在 添加一些特效。
2024-11-13 11:03:33
228
原创 Unity图形学之Shader2.0 OutLine实例
(1)直接 渲染两个物体:一个大 一个小,大的是轮廓,直接返回一个颜色;小的物体按照纹理采样返回颜色。两个Pass { }
2024-11-13 10:58:15
185
原创 Unity图形学之Shader2.0 河流实例
(2)什么叫做UV:笛卡尔坐标系,不管图片多大多小,左下角就是(0,0)点,左上角就是(0,1)点,然后按照图片的比例去找。(1)让纹理滚动起来。
2024-11-13 10:48:21
768
原创 Unity图形学之Shader2.0 波动实例
4.Shader2.0 对 property 变量需要 引用。φ:决定波形与X轴位置关系 或 横向移动距离 (左加右减)ω:决定周期(最小周期 T = 2π / | ω |)Α:决定峰值(即纵向拉伸压缩的倍数)(1)计算顶点的位置。
2024-11-13 10:45:34
232
原创 Unity图形学之Shader2.0矩阵变换
规律:3D变换 首先将物体坐标系变换到世界。2.将 世界坐标 变换 到相机坐标。Unity3D里面矩阵是左乘的。
2024-11-13 10:35:53
256
原创 Unity图形学之Shader纹理寻址
一片显示区域都用同一个像素点,这样锯齿和马赛克现象出现,丢失的情况,解决方法就是用 Bilinear或者Trilinear采样的算法。Bilinear:就近 周围 四个像素的平均 RGBA值(上+中+下+左+右)/5。1.纹理 和 显示区域 相等:显示区域是100*100 纹理大小:100*100。2.纹理 大于 显示区域:显示区域是100*100 纹理大小:1024*512。3.纹理像素 小于 显示区域:显示区域 100*100 纹理大小:50*50。片段着色器:主要进行纹理采样。
2024-11-13 10:28:18
563
原创 Unity图形学之OpenGL渲染流程
MeshRender:将上述的UV信息,顶点位置信息,法线,切线信息传递到GPU。FBX等模型文件:包含UV信息,顶点位置信息,法线,切线等渲染所需要的信息。1.CPU: 从FBX加载到内存,经过MeshRender渲染出来。2.GPU:渲染管线。
2024-11-13 10:20:55
449
原创 Unity图形学之Shader灯光的设置
FrameBuffer:Float[720*1280] FrontBuffer和FrameBuffer交替显示,FrontBuffer写完就变成FrameBuffer。Gbuffer:通常测试的像素暂存RGBA 模板值 深度值等信息--中转缓存 Float[720*1280*4] 相当于数组。1.可编程区域:顶点着色器和片段着色器,三大测试只是开关的打开和关闭。光栅化:将顶点 转换成像素 从点到面的变换 将顶点的信息做插值运算。Blend:将当前要渲染的像素 和 已经渲染出来的像素 混合运算。
2024-11-13 10:17:49
461
原创 Unity图形学之Shader属性定义
(8)定义一个3D的纹理:只能通过代码去创建,OpenGL3.0及以上才支持。(7)定义一个CubeMap:六个面的纹理 通常用于天空盒和反射。"display name":供外界参考说明的。name:成员变量的名字 一般以下划线开头。Shader决定材质怎么跟灯光的进行作用。1.什么是材质球:类似人的衣服。= number :表示默认值。Int:表示变量类型。
2024-11-07 16:43:17
290
原创 Unity运行中加载特效AB包并且对象池管理
3.对象池管理脚本:ObjectPoolManager.cs。4.AB包管理器:AssetBundleManager.cs。2.自动加载预制体脚本:AutoLoadPrefab.cs。引用的的工具类:UtilsFunc.cs。
2024-03-27 18:43:50
546
原创 Unity角色多人同步
(2)用于多人同步的具体实现类:SyncTransform.cs。(3)用于状态同步的具体实现类:SyncState.cs。网络层脚步3:PackageProtocol.cs。网络层脚步5:ExternalMessage.cs。(1)用于多人同步的基类:SyncBase.cs。网络层脚本1:NetManager.cs。网络层脚本4:ProtoMaps.cs。网络层脚本6:TestProto.cs。模型层:SyncModel.cs。网络层脚本2:Client.cs。(4)状态同步的做法:本人。
2024-03-27 18:13:47
889
原创 校园失物招领系统的设计与实现-Flask+Mysql+LayUI
3.开发工具:PyCharm+Navicat for MySQL。6.源码咨询:私信免费发源码。(1) 管理员登录页。
2024-01-11 16:24:25
668
原创 Unity组件开发--长连接webSocket
6.定义心跳协议类:HeartBeatServiceGameObject。5.定义协议索引管理,添加长连接的协议:ProtoMaps。8.定义服务器对应的协议消息:TestProto.cs。3.定义包协议结构:PackageProtocol。1.下载安装UnityWebSocket 插件。
2024-01-11 11:59:20
3911
原创 Unity组件开发--UI管理器
5.上面这个json文件中的path,对应的就是UI预设体的名字:由于我们的UI预制体都是用AB包的方式加载的,就都放在BundleAsset文件夹中。4.所有的UI界面预设体都用一个json文本管理起来:UIPanelType。2.画布下其他节点类型:用于不同界面类型的管理归类window类型。(4)画布下挂载两个脚本:UIRoot和UIManager。7.然后所有UI类脚本必须继承的基类:BasePanel。(2)创建一个UICamera节点,管理相机。(1)渲染模式是:屏幕空间相机。
2024-01-10 15:20:49
1583
2023趋势:数字表达、时尚和美-Z世代如何在沉浸空间表达自我
2023-11-28
ChatGPT使用手册,汇总ChatGPT各种应用场景,ChatGPT知识讲解手册和ChatGPT工作场景说明
2023-04-06
Midjourney关键词,AI绘画工具使用 关键词汇总,Midjourney绘画关键词列表
2023-04-06
鸽达IM社交APP源码(安卓ios前后端开源包括搭建部署流程视频)
2023-03-03
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人