十三

安心学技术

写在前面 Github 上利用 Hexo 建立的博客是无法被搜索引擎搜索到的。Github 本身也不会将信息提交给引擎。所以,为了让博客信息被检索到,我们需要手动将博客网站提交给搜索引擎并验证,实际上就是验证网站是我们自己的。对于 hexo 博客来说,如果你是部署在 GitHub Pages,那么你是无法被百度收录的,因为 GitHub 禁止了百度爬虫。(不过这里可以介绍下我使用百度站长工具的辛酸泪) 查看自己博客有没有被搜索引擎收录可以在搜索引擎中输入 site:www.your_website 来查看是否收录 Google 引擎验证申请地址 百度 引擎验证申请地址 Bing 站长工

我的博客现在使用的是 NexT 8.10,按照网上的攻略尝试了几种方法,都不是非常好,最终是通过 官方文档,使用了 pandoc 来显示数学公式。 安装hexo-renderer-pandoc 为了使用 pandoc 作为 Hexo 的渲染引擎,我们需要安装插件 hexo-renderer-pandoc,步骤如下: # 卸载Hexo默认渲染插件: npm uninstall hexo-renderer-marked --save # 安装pandoc渲染插件: npm install hexo-renderer-pandoc --save 配置使用 mathjax 在站点 NexT 配

大气散射介绍 当你看到蓝天白云,日落黄昏,或者从太空遥望地球,地球周围一圈蓝色光晕,有没有想过这些现象产生的原因是什么?这些物理现象用一句话解释:太阳光与大气层中的参与介质发生了大气散射现象,从而形成了天空颜色 散射 光源的辐射沿着路径前行时,碰到参与介质时会发生几种不同散射现象的行为: * 出射散射(Out-Scattering) 出射散射也就是光子碰到空气中的分子后,原本要射向摄像机的光线发生了偏转,光线的方向改变了 * 入射散射(In-Scattering) 入射散射与出射散射相反,本来不指向相机的光线也可能被偏转到相机的方向,这就是入射散射。

Landscape 使用 TextureArray UE4 中 Landscape 一般会用到多张贴图来丰富地形地貌,例如下面是一个地形的例子: 这个地形包含 7 个 Layer,每个 Layer 由三张贴图组成: 然后再加上权重图,在打安卓包时,就会出现如下错误: UATHelper: Packaging (Android (ASTC)): LogShaderCompilers: Display: shader uses 19 samplers exceeding the limit of 16 UATHelper: Packaging (Android (ASTC))

UE4 Landscape Mobile 1. UE4 渲染流程 1.1 UE4 渲染线程 * Game Tread(游戏线程) :游戏逻辑运算 * Rendering Thread(渲染线程) :从 TaskGraph 中取出任务,并生成平台无关的 Command List (渲染指令列表) * RHI Thread (Render Hardware Interface 线程):会执行和转换渲染线程的 Command List 成为指定图形 API 的调用(称为Graphical Command),并提交到GPU执行。 这3个线程处理的数据通常是不同帧的,譬如 GameThrea

终于发奋去研究 UE4 渲染管线了,下面是从网上搜集到的资料,后续会逐步了解渲染管线各个步骤的技术方案。 下图的渲染图详细解释在如下链接中 虚幻引擎中文技术直播 第1期 虚幻引擎4的实时渲染流程 下面是官方的完整管线图 参考 代码质疑人生:渲染管线Pipeline Unreal Engine 官网在线课程 介绍实时渲染原理 UE4渲染系统概览:列举了UE4 渲染类视图跟流程图

UE4 反射系统 反射的概念是由Smith在1982年首次提出的,主要是指程序可以访问、检测和修改它本身状态或行为的一种能力,即在运行过程中检查自己的C++类,函数,成员变量,结构体等等。 在UE4里面,通过如下的宏定义,来实现发射: #define UPROPERTY(...) #define UFUNCTION(...) #define USTRUCT(...) #define UMETA(...) #define UPARAM(...) #define UENUM(...) #define UDELEGATE(...) #define UCLASS(...) BODY_MACRO_C

UObject概况 在开始之前,需要先介绍一下UE4是怎样管理UObject的,UObject其实并不是最上层的基类,UE4可能是觉得代码都写在UObject里太多了,看起来比较麻烦,所以就让UObject还继承着别的基类,这样可以把不同代码写到不同的基类里。其中最上层的基类是UObjectBase,他在创建的时候会把自己交给UE4的两个全局容器来管理,在销毁的时候把自己从管理自己的容器中移除 * GUObjectArray : 类型是 FUObjectArray * FUObjectHashTables : FUObjectHashTables::Get() UObject 继承关系

最近开发一个 UMG 插件,插件里用到了静态变量,在 UE4 编辑器里运行没有啥问题,然后打了手机包iOS后,运行一段时间后,闪退了,闪退点就是我写的代码里中访问全局变量的时候,使用 UnrealVS 插件在 VS2019 下开启 Window 模式,也出现了类似的闪退问题: UnrealVS 参数 “E:\xxx.uproject” -game -windowed -log -verbose 闪退代码处: // .h 文件 UCLASS() class UMGEXT_API UExtTextBlock : public UTextBlock { static UDataTab

1.UMG类视图 UMG 控件跟Unity UGUI不太一样,不是所有的控件节点,都能拥有子节点,为了区分这三种控件,整理了下他们基类: * UWidget : 所有UMG 控件的公共基类,不提供增加子节点功能 * UPanelWidget : 提供了增加子节点功能,可以有多个子节点 * UContentWidget : 继承于 UPanelWidget ,是 UPanelWidget 的一种特例,只能有一个子节点 UMG常用控件的继承关系如下图所示: UPanelWidget 实现了可以增加节点的功能 AddChild ,然后提供了是否可以增加多个子节点的标记为, UPanel