自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

versace的博客

编程技术的一些学习体会

  • 博客(31)
  • 资源 (1)
  • 收藏
  • 关注

原创 d3d12龙书学习之MiniEngine的最小化实现(十六) 龙书第20章 阴影贴图 Shadow Map

文章目录shadow map技术简介MiniEngine中的shadowBufferMiniEngine中的shadowCamera调试以及知其然而不知所以然的魔改过程柱子上没有影子?总结shadow map技术简介Shadow Map网上有大把的技术文档。简单说就是设置一个camera到需要产生阴影的光源位置,根据光源类型有不同的camera类型。使用这个camera观察世界,生成深度图...

2019-07-21 17:28:10 505 1

原创 d3d12龙书学习之MiniEngine的最小化实现(十五) 龙书第19章 法线贴图 Normal Map

文章目录为什么要有法线贴图原理实施MiniEngine注意点为什么要有法线贴图先来看一张截图很容易发现,这个柱子的反光不对,一眼看过去就知道是一张贴图,非常的不真实。因为我们的柱子模型,本身就是平滑的。当然了可以通过雕刻,使得柱子模型完美的匹配对应的纹理。但工作量太大。于是就用到了法线贴图技术原理根据贴图纹理生成一张法线贴图这个法线贴图中每个像素记录的是该点的法向量在PS阶段...

2019-07-14 22:54:42 369

原创 d3d12龙书学习之MiniEngine的最小化实现(十四) 龙书第18章 skybox天空盒、动态天空盒

文章目录项目准备什么是天空盒静态天空盒实现镜面反射实现动态天空盒实现实现一个天空盒缓冲区总结总结项目准备因为天空盒用的是柱子那个场景。后续做裁剪时修复了摄像机的bug,把15和17章的代码整合在一起。这样保证我们新的项目中底层代码始终是最新的。项目准备后的效果图:什么是天空盒我们玩游戏,可以看到很远的景色。那这些很远的景色真的是真实绘制的吗?如果是的话,对于那么遥远的物体绘制,需要...

2019-07-07 21:54:26 609

原创 d3d12龙书学习之MiniEngine的最小化实现(十三) 龙书第17章 拾取

文章目录拾取是什么3D拾取的原理原先代码建议改造拾取代码解释debug模式下“跳帧”?最终效果拾取是什么我们玩游戏中,选中目标啊,鼠标按下按钮之类的。这些都属于图象拾取范畴。对于UI来说,因为是2D,很简单,只需要根据鼠标坐标来找出最上层的UI就可以了。对于3D空间来说,因为透视原理,就不能简单的根据鼠标坐标来判断了。3D拾取的原理根据鼠标所点的位置,生成一根射线,射线与3D空间中物...

2019-06-23 00:06:12 252

原创 d3d12龙书学习之MiniEngine的最小化实现(十二) 龙书第16章 实例化与视锥体裁剪

文章目录实例化通过实例化修改渲染流程视锥体裁剪修改MiniEngine中Frustum为左手坐标系通过一个常量缓冲区实现裁剪release帧率对比实例化实例化实际上就是通过一套顶点和索引,绘制多个物体。可以为物体设置不同的转换矩阵,纹理等所需属性。简单流程如下:缓冲区写入每个渲染目标的的矩阵参数缓冲区写入每个渲染目标的纹理属性以及纹理ID缓冲区写入所需的纹理那么通过实例化只需要...

2019-06-21 23:31:24 394

原创 d3d12龙书学习之MiniEngine的最小化实现(十一) 龙书第15章 第一人称摄像机 动态索引

文章目录第一人称摄像机动态索引MiniEngine中的InitAsDescriptorRange简单对比下采用动态索引和非动态索引的帧数变化第一人称摄像机我们原来的摄像机主要是通过鼠标来旋转、放大图象。旋转用的是比较符合观察的那种。本章呢要做这个第一人称视角的摄像机。实际上就是根据玩家的操作,来不断调整摄像机的位置以及朝向。整体来说没什么难度。在MiniEngine中有一个CameraC...

2019-06-16 18:53:14 318

原创 d3d12龙书学习之MiniEngine的最小化实现(十) 龙书第14章 曲面细分阶段

文章目录前言常量外壳着色器控制点外壳着色器域着色器看下龙书的结果前言dx12的渲染流水线如下,基本上起一个流水线的输出等于下一个流水线的输入阶段名字可编程内容输入装配器阶段 IA输入顶点、索引、拓扑结构顶点着色器阶段 VS修改顶点数据,例如坐标转换(可选)外壳着色器阶段 HS常量外壳着色器:输出曲面细分因子(可选)外壳着色器阶段 HS控制点外壳着...

2019-06-14 22:53:05 256

原创 d3d12龙书学习之MiniEngine的最小化实现(九) 龙书第13章 计算着色器 模糊,描边

文章目录前言添加计算着色器相关的文件利用计算着色器计算输入向量的和numthreads的含义dispatch参数意义水波纹采用计算着色器计算模糊效果sobel描边计算着色器总结调试着色器目前为止,对于原MiniEngine代码的变化记录前言计算着色器是利用GPU来计算的一种着色器程序。本身不属于渲染管线。但因为是GPU编程中的一部分,所以可以读到显存中的各类数据。又因为GPU并发计算能力很强,...

2019-06-11 00:10:33 456

原创 d3d12龙书学习之MiniEngine的最小化实现(八) 龙书第12章 几何着色器 公告板

文章目录几何着色器简介公告板实现流程公告板几何着色器解释看下效果开启MSAA以及AlphaToCoverage之后的效果修改debug渲染效率过低的问题总结几何着色器简介可以看d3d12龙书第146页。对于本章内容来说,只有3个着色器。顶点着色器(VS)、几何着色器(GS)、像素着色器(PS)VS ==> GS ==> PSVS:拿到渲染目标的顶点,可以修改传入的顶点参数G...

2019-06-04 00:36:12 368

原创 d3d12龙书学习之MiniEngine的最小化实现(七) 龙书第11章 模板缓冲

文章目录前言模板缓冲的意义修改camera坐标系camera生成的矩阵修改深度缓冲区默认值以及默认深度\模板检测函数的修改默认PSO采用的光栅化修改绘制基础图形(地板、墙、头骨)绘制镜中世界MiniEngine模板缓冲无效的bug绘制透明镜子绘制现实阴影双重混合?镜中阴影?前言本章的主要内容是通过模板缓冲来实现镜中世界。对于镜中世界的实现来说,还可以采用一个额外的摄像机来做,当然我也没有实际...

2019-06-02 00:20:59 384

原创 d3d12龙书学习之MiniEngine的最小化实现(六) 龙书第10章 混合

文章目录前言箱子采用带透明的纹理MiniEngine中非垂直同步的时间戳bug雾效果常量缓冲区16字节对齐的问题水体半透明效果习题5 禁止写入红绿通道总结前言首先我们先简单的优化下代码。在我们现在的项目中,shader运行总共需要4个常量缓冲区:槽位0:传入渲染目标特有的ObjectConstants结构,里面有模型转世界坐标矩阵、纹理转换矩阵、纹理偏移矩阵槽位1:传入通用的投影矩阵、...

2019-05-26 22:33:17 365

原创 d3d12龙书学习之MiniEngine的最小化实现(五) 龙书第9章 纹理贴图

文章目录工程结构优化MiniEngine的纹理操作类添加shapes所用的纹理添加水体所用的纹理总结工程结构优化在MiniEngine项目中,核心文件都放在Core文件夹下,显得文件很多,阅读起来可能不是很方便。这里稍微做一下整理。根据功能分好文件夹,对应VS中已经分好的文件夹。MiniEngine的纹理操作类在MiniEngine中提供了非常方便的纹理类,TextureManager。...

2019-05-25 22:45:09 396

原创 d3d12龙书学习之MiniEngine的最小化实现(四) 光照shader的实现

文章目录前言修改MiniEngine的坐标转换d3d12book的光照shader添加shapes对应的光照shader最终结果为什么结果比d3d12book的要亮前言光照的实现,主要是shader做的,C++代码层没添加多少东西。理解了shader,看懂d3d12book的源码,shader直接拷进来,C++代码直接转过来就可以了。难度主要是看懂shader。对于光照的计算,应该说我也没...

2019-05-21 23:21:32 398

原创 d3d12龙书学习之MiniEngine的最小化实现(三)

文章目录前言第七章的实现过程生成顶点、索引组建一个渲染结构体,用于渲染不同的物体shapes分物体渲染waves分物体渲染一些额外的修改结果图如下前言第七章一开始,讲了一个帧资源渲染的东西。主要以一就在于时CPU和GPU异步工作。根据龙书前面的学习也能知道,在d3d12中,CPU负责组建渲染指令、渲染数据。GPU读取上传缓冲区和命令队列来执行。CPU组建完当前帧内容后,对于GPU使用的内容...

2019-05-02 16:32:37 735

原创 d3d12龙书学习之MiniEngine的最小化实现(二)

文章目录前言龙书第六章的实现过程绘制流程简述上传缓冲区顶点数据、索引数据shader模块根签名渲染流水线先组装起来看看实际效果摄像机代码组装前言最近发现一个不错的讲d3d12的博客,看了很多文章,受益匪浅。https://blog.csdn.net/u014038143/article/category/7328933里面对d3d12中的很多概念解释的很清晰。龙书第六章的实现过程绘制流...

2019-04-27 21:20:00 731

原创 d3d12龙书学习之MiniEngine的最小化实现(一)

文章目录MiniEngine介绍项目目的前期准备龙书第四章的实现过程0. 创建win32窗口1. 创建ID3D12Device接口实例2. 创建ID3D12Fence对象,并查询描述符大小3. 检测4x MSAA的支持(这一步骤没有必要性)4. 创建命令队列、命令列表分配器和主命令列表5. 创建交换链6. 创建描述符堆7. 调整后台缓冲区大小,创建渲染目标视图8. 创建深度/模板缓冲区以及视图9....

2019-04-13 23:30:29 3285 4

原创 魔力宝贝高清单机计划(二) 地图转为tiled map

文章目录地图格式tiled map格式学习转换步骤代码地址: https://github.com/mversace/CrossGateRemastered地图格式地图文件头:#pragma pack(1)struct tMapHead{ char cFlag[12]; unsigned int w; unsigned int h;}; // 后续紧跟w*h#pragma...

2019-03-17 00:10:16 4240 7

原创 魔力宝贝高清单机计划(一) 图库提取

文章目录资源分类bin目录调色板格式索引格式图库格式取图步骤最终效果20来年前很喜欢魔力宝贝,最高才到达过40多级。后来陆陆续续玩过怀旧。毕竟游戏过于古老,很多不方便的地方。4年前想着高清化,只不过领导不支持。官方手游也很不满意。这一次,准备自己制作一下高清单机版,能够把剧情完整走一遍,也算是完成一个小小的愿望。非营利项目,代码全部开源。git地址:https://github.c...

2019-03-10 13:41:26 4793 10

原创 KBEngine(CBE)引擎研究 (二) C++ Python 混合调试

文章目录C++、Python混合调试基础CBE混合调试QACBE开启混合调试步骤环境CBE中的项目依赖图修改CBE中Python的调用方式启动项目看看C++、Python混合调试基础混合调试,可以在C++和Python代码中切换,有详细的调用栈信息。非常方便。link:C++ Python混合调试link:Python混合开发CBE混合调试QAQ:为什么CBE本身不支持混合调试?A:...

2019-01-26 14:27:08 2547

原创 KBEngine(CBE)引擎研究 (一) 启动正确的进程

文章目录简介CBE文件夹构成启动对应的服务器VS中设置环境变量启动解决方案简介KBEngine引擎(后来官方改名为CBE,下同)是一套完善的游戏服务器引擎底层采用C++编写,脚本采用的是python官方文档:link: 文档CBE文件夹构成按照官方demo的操作手册:link: demo可以看到目录结构是这样的:也就是每一个项目都有一个自己独立的文件夹。他们会共享bke中的脚本,...

2019-01-26 13:53:54 2321

原创 pomelo源码解析(总结)

pomelo启动都干了什么从哪里启动的createApp做了什么configure做了什么start做了什么其他进程怎么启动的?其他进程的start做了什么总结这是pomelo源码分析的最后一篇文章。讲一下典型的一个pomelo引擎做了什么从哪里启动的我们知道一个pomelo启动是这样子的pomelo start可以看下电脑的环境变量,最终执行文件在pomelo/bin/pomelopr...

2019-01-09 00:19:47 1390

原创 pomelo源码解析之组件解析(总结)

文章目录基础知识学习pomelo中到底包含了什么东西基础知识学习需要的一些基础知识:nodejs的加载模块怎么包装的模块到底导出了什么js中的两个添加属性的接口:defineProperty实际是__defineGetter__的升级版,后者在高版本中即将废弃,以下是文档:__defineGetter__文档defineProperty文档pomelo中到底包含了什么东西使用...

2019-01-06 22:06:21 669

原创 pomelo源码解析之组件解析(四)

文章目录消息处理组件server过滤器globalFilterService、filterService处理消息模块handlerService计划任务模块cronHandlers监听client的服务器组件包含哪些东西?采用哪种连接this.connector加解密this.encode this.decode是否RSA加密this.useCrypto是否黑名单过滤this.useHostFil...

2019-01-06 21:50:29 952 8

原创 pomelo源码解析之组件解析(三)

文章目录频道组件RPC字典组件protobuf组件客户端连接管理session消息发送组件频道组件具体文件是:pomelo/lib/common/components/channel.js组件加载后写入app中 app.channelService === app.components.__channel__可以设置频道(channel),把用户放入频道不同进程的玩家可以添加到相同的频道下...

2019-01-06 17:54:47 1294 1

原创 pomelo源码解析之组件解析(二)

文章目录监控器组件master监控器masterwatcherwatchdogwatchServersystemInfonodeInfomonitorLogscriptsprofiler普通监控器monitorwatcher总结监控器组件主要功能就是监控进程的一些运行信息,进程重启基于pomelo-adminmaster监控器具体文件是:pomelo/lib/common/compone...

2019-01-04 23:35:34 582

原创 pomelo源码解析之组件解析(一)

文章目录RPC组件RPC服务器组件后端特殊remote:msgRemote前端特殊remote:channelRemote前端特殊remote:sessionRemoteRPC客户端组件给rpc-client添加可rpc的地址rpc消息的前后过滤总结RPC组件RPC是用于服务器进程间通讯的一种实现,能够以类似函数调用的方式来实现进程间通讯这个组件基于pomelo-rpc实现,也就是额外封装了...

2019-01-03 23:04:25 515

原创 pomelo源码解析之模块解析(五)

文章目录pomelo/lib/connectors1. sioconnector2. hybridconnector3. udpconnector4. mqttconnector总结pomelo/lib/connectors4个模块都是服务器,都是继承自EventEmitter,只是支持的通信协议有差别1. sioconnector通信协议:基于socket.io的websocke...

2018-12-27 21:47:56 740

原创 pomelo源码解析之模块解析(四)

文章目录pomelo-rpcpomelo-rpc/lib/rpc-server 服务器:pomelo-rpc/lib/rpc-client 客户端总结pomelo-rpcRPC服务是用于进程间通讯的一项技术,底层通讯基于TCP或者更上层的mqtt,ws等通信协议对用户屏蔽底层细节,进程间通讯形如函数调用,用起来比较方便传统开发一个进程间通讯业务,例如logonServer和gameSe...

2018-12-26 21:38:39 481

原创 pomelo源码解析之模块解析(三)

文章目录pomelo-admin源码解析子模块解析:pomelo-admin/clientpomelo-admin/masterpomelo-admin/modulespomelo-admin/monitorpomelo-admin/protocol/mqttmqtt简单介绍mqtt库所实现的客户端和服务器详解整体结构消息传输流程对外接口tipspomelo-monitor解析pomelo-ad...

2018-12-25 22:01:57 1602

原创 pomelo源码解析之模块解析(二)

pomelo-protobuf解析官方wiki:https://github.com/NetEase/pomelo/wiki/消息压缩protobuf是一种序列化技术,能够大大减少传输无效数据为什么可以减少传输无效数据先看一下传统的C++通信格式#pragma pack(1)struct player{ char name[32]; int sex;};#pragma pac...

2018-12-23 23:55:11 1216

原创 pomelo源码解析之模块解析(一)

pomelo是网易基于Node.js实现的一套完整的服务器引擎。官方中文wiki:https://github.com/NetEase/pomelo/wiki/Home-in-Chinese最近开始使用该引擎,做一个源码阅读的笔记 学习pomelo源码之前还需要学习一下Node.js的基础知识http://nodejs.cn/api/modules.html 官方文档,可以先学...

2018-12-23 14:24:34 1257

SEE4CGW 魔力宝贝图片查看

读取魔力宝贝的图片数据。

2019-03-10

空空如也

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

TA关注的人

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