海洋个人博客

喜欢自由的飞翔!

D3D渲染技术之简易框架

在上一篇博客中,我们介绍了D3D12初始化流程实现过程,本篇博客我们搭建一个简易的迷你型小框架用于实现我们的初始化流程,在游戏编程中,我们都需要定时器的封装,比如骨骼动画需要,联网也需要定期判断是否短线,断线后多久开始重连,帧的时间间隔等等,可见时间定时器是很重要的,在这里我们未雨绸缪也实现一个定...

2018-09-04 16:52:05

阅读数:89

评论数:0

D3D12渲染技术之几何辅助结构

我们绘制一个立方体需要一组顶点和索引,将顶点和索引缓冲区组合在一起可以定义一组几何图形的结构, 此外,该结构的顶点和索引数据是在系统内存中的,以便CPU可以读取它, CPU需要访问几何数据以进行拾取和碰撞检测。 每当我们定义几何时,我们使用以下MeshGeometry(在d3dUtil.h中定义)...

2018-09-18 09:30:12

阅读数:6

评论数:0

D3D12渲染技术之光栅化与管道

光栅化状态 虽然渲染管道的许多部分都是可编程的,但某些部分只是可配置的。 由D3D12_RASTERIZER_DESC结构表示的光栅化器状态组用于配置渲染管道的光栅化阶段: typedef struct D3D12_RASTERIZER_DESC { D3D12_FILL_MODE FillM...

2018-09-17 13:42:22

阅读数:14

评论数:0

D3D12渲染技术之编译Shader

很多人只知道写Shader,但是并不了解DX或者OpenGL是如何编译Shader的,我们写的Shader是一种文本文件,它可以被DX或者OpenGL读取,说明它们提供了接口编译Shader。3D引擎都与DX或者OpenGL相关的,本篇博客就给读者介绍如何编译Shader的。 在Direct3D...

2018-09-17 08:48:47

阅读数:31

评论数:0

D3D12渲染技术之常量缓冲区

常量缓冲区是GPU资源(ID3D12Resource)的示例,其数据内容可以在着色器程序中引用。 正如我们将在博客中学到的,纹理和其他类型的缓冲区资源也可以在着色器程序中引用。顶点着色器具有以下代码: cbuffer cbPerObject : register(b0) { float4...

2018-09-16 13:45:56

阅读数:56

评论数:0

D3D12渲染技术之像素着色器

再介绍一下片段着色器,在光栅化期间,从顶点着色器(或几何着色器)输出的顶点属性在三角形的像素上进行插值。 然后将插值作为输入,输入到像素着色器。 假设没有几何着色器,下图说明了到目前为止顶点数据的路径。 每个顶点元素都有一个由D3D12_INPUT_ELEMENT_DESC数组指定的相关语义...

2018-09-15 13:03:56

阅读数:20

评论数:0

谈谈程序员如何快速提升职业技能

IT行业有很多分支:AI,大数据,区块链,游戏等等,其中游戏开发由于Unity引擎的普及入门门槛很低,收入相对来说比较高,导致了大量的应届毕业生或者说其他IT行业的人转到游戏开发中,游戏开发涉及到的技术也是很多的,其中包括很多算法:四叉树,八叉树,Bezier,A* 算法,人工智能,行为树,高斯,...

2018-09-15 10:45:40

阅读数:89

评论数:0

D3D12渲染技术之顶点着色器

相信大家以前用过D3D9的或是编写过Shader的对顶点着色器都比较了解,现在我们回顾一下: cbuffer cbPerObject : register(b0) { float4x4 gWorldViewProj; }; void VS(float3 iPosL : POSITIO...

2018-09-14 08:34:52

阅读数:44

评论数:1

D3D12渲染技术之绘制网格

在前几篇博客中,我们主要关注渲染管道的概念和数学方面。 反过来,从本篇博客开始重点介绍配置渲染管道,定义顶点和像素着色器以及将几何图形提交到渲染管道以进行绘制所需的Direct3D API接口和方法。 学习配置渲染管道,对于学习Unity的自定义渲染管线有很大帮助,它们的原理类似的,做到举一反三。...

2018-09-13 13:48:25

阅读数:35

评论数:0

手把手教你架构3D引擎高级篇系列四

第三方库已经完成,接下来我们要考虑引擎架构的事情了,架构一款从无到有的引擎,从哪里下手呢?面对架构一款比较庞大的引擎,建议先从引擎的内存管理入手,因为内存是跟硬件相关的,它也是引擎的心脏,处理不好,引擎会经常崩溃的。还有因为引擎的代码量比较大,这里只把核心的代码给读者展示,如果全部展示信息量太庞大...

2018-09-12 10:39:29

阅读数:40

评论数:0

手把手教你架构3D引擎高级篇系列三

Unity对于开发者来说是一个黑盒子,开发者只需掌握引擎提供的脚本语言,能够熟练运用就可以了,这导致了现在很多程序员对于C++编程或者说对于引擎只会一些表面的东西,深入的一概不知。久而久之,你就只是一个脚本程序员,你能做的事情别人也能做,对于公司来说你就属于可有可无的,薪资方面不会有大的长进,随时...

2018-09-11 14:55:41

阅读数:34

评论数:0

D3D12渲染技术之渲染管线

渲染管线指的是基于虚拟相机看到的内容生成2D图像所需的整个步骤序列,在博客D3D12渲染技术概述中介绍过渲染管线,本篇博客具体讲解各个模块的作用,先看下图所示: Input Assembler Stage 上图中Input Assembler Stage表示的是从存储器读取几何数据(顶...

2018-09-10 09:12:43

阅读数:80

评论数:0

手把手教你架构3D引擎高级篇系列二

系列一给读者介绍了我们查阅的相关资料,下面我们需要选择引擎的渲染库了,在这里先谈谈我对引擎的学习: 上图是我做项目用过的或者说自学所用到的引擎,我刚开始接触引擎是在读研究生的时候,是实验室自研的引擎,是为项目开发定制的,功能现在来说是比较陋的,后来我先接触的是Ogre引擎,利用它也做过一些小...

2018-09-10 09:03:44

阅读数:43

评论数:0

手把手教你架构3D引擎高级篇系列一

最近一段时间事情比较多,从本篇博客开始,我手把手教大家如何开发一款类似商业引擎Unity的开发,我们在这里要阅读学习一些编写引擎的知识,编写引擎之前,我们需要安装Visual Studio VS2017,Windows操作系统是64位的,编程语言是C++,我们的引擎会使用比如Lua,C#都可以使用...

2018-09-09 08:23:54

阅读数:89

评论数:0

Unity大密度建筑场景加载解决方案

现在虚拟城市仿真,以及军事仿真项目越来越多,开发此类项目,首先面对的一个比较棘手的问题是内存管理,城市中的建筑物特别多,这些建筑物的面数和贴图都要被加到内存中的,内存有自己的峰值,超过了就要崩掉,所以内存的优化是必须要面对以及解决的问题。 Unity官方提供了Occlusion Culling的...

2018-09-07 09:41:09

阅读数:106

评论数:0

Unity移动端软阴影技术总结

在移动端实现阴影技术可以提升画面品质,我们说的实时阴影也成为软阴影,鉴于移动端硬件的限制,一些复杂的算法比如PSSM,CSM等不可能在移动端去实时,我们只能找一种捷径,既能把实时阴影实现出来,效率还要正常运行。本篇博客把市面上比较流行的在移动端运行的算法或者阴影插件给读者汇总一下,以便读者在项目开...

2018-09-06 08:17:03

阅读数:91

评论数:0

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