窗口Resize解决方案
先简单说下什么是 GLFW —— 它用于
TAG_COLLECTION //
共有 26 篇笔记使用了这个 Tag。
先简单说下什么是 GLFW —— 它用于
打算稍微说说 Job System 中的 threadlocal 声明的变量的用途
1. 扫描 Assets/ 2. 使用 AssetDatabase 发现资产、维护 GUID / meta 3. 通过 ImporterRegistry 把硬盘上的资产转化成 Runtime 可使用的资源 4. 在 AssetManager 中管理 CPU 资产、异步加载、热重载 5. 在 ResourceMan...
首先在最早的实现当中, 是直接使用文件路径作为唯一的身份标识, 对于当时的那个小 demo 是没有问题的. 但是其实存在很严重的问题 ——
姑且称之为 Archive Mode —— 它合并了 Read 和 Write 两种方法,是的读写非常的对称,大大减少出错概率.
单独实现一个可执行程序作为Benchmark,不依赖 Editor 的运行.
先生成一份纯数据的场景描述,然后丢给下一步的工厂BenchmarkSceneFactory进行实例化,构建真实的场景
实现了一个消息总线,订阅/发布,不多说
把一些可以并行执行的 CPU 工作交给 Worker 去做,比如资产加载、可见性计算、后台统计等。
存储Job数据的地方(看名字也非常显然), 看 API 非常好理解其用法用途, 不过还是稍微说下其中的一些设计
简单说下这个方法的设计, 其实非常的简单, 就是上游业务调用的时候, 可以把一个大的 Range 拆分成若干小的 Chunk 然后进行并行执行.
拆分Profiler中的宏定义和展开这块的内容 ——
把 ProfilerScope 和 ProfilerFrameScope 做一次 RAII 封装,保证有Begin就一定有End
如果热路径存储的是字符串,假设一直在每一帧运行的话 ——
定义 ProfilerEvent —— 把一次 profiler 的行为打包,形成一个固定格式,而不是随意乱写的数据(
先说明一下字段的定义,和 Session 比较简单的零碎边缘,把内部的具体实现留到下次说明
聚焦外部调用 BeginFrame / BeginZone / RecordCounter / RecordInstant 后,Session 如何构造事件,并把它交给下一层,即 ——
说明多线程中,每个线程获得和维护自己的 profiler threadId 和事件 buffer
浅说一下在 ChikaEngine 中实现的 RDG
简单说一下该引擎的渲染流程 ——
之前为了简单敏捷,Shader 布局是硬编码写死在全局 Descriptor Set Layout 中
浅说一下 ChikaEngine 中的 Stable Hash 设计。
实现一个简单的 Function Wrapper, 让传给 Job System 的 Callable 在 Runtime 打包
假设一个线程调用了 Wait() 方法, 那么首先它确乎是会阻止代码继续往下运行, 而是等待任务执行完毕.
当前的实现是, 优先执行自己队列中的任务, 如果空闲的话, 先尝试从全局的 InjectionQueue 中尝试接单, 如果还是空闲, 则尝试从其他 Worker 的队列中领任务. 如果还是空, 则进入休眠,交出资源,等待唤醒.