海洋个人博客

喜欢自由的飞翔!

排序:
默认
按更新时间
按访问量

D3D渲染技术之简易框架

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

2018-09-04 16:52:05

阅读数:127

评论数:0

谈谈Unity实体组件ECS与Jobs System

Unity2018版本提供了ECS和Jobs System功能,网上也有很多这方面的技术介绍,本篇博客从Unity架构优化的角度给读者介绍关于ECS和Jobs System的使用,结合着实际案例希望让读者更容易理解它们。 Unity 实体组件系统和 C# Job System 是两个不同的系统,...

2018-08-20 13:16:51

阅读数:375

评论数:0

手把手教你架构3D引擎高级篇概述

前几年写过一本书《手把手教你架构3D游戏引擎》电子工业出版社,主要内容讲的是固定流水线编程,目的是让读者理解第一代引擎是如何实现的,从本篇博客开始,给读者介绍关于使用可编程流水线自己搭建3D游戏引擎,我将它设为高级篇,我会从查资料学习技术最基本的讲起,教给读者如何一个人搭建一款接近商业的自研引擎,...

2018-08-16 15:39:57

阅读数:401

评论数:0

Unity大场景数据加载及优化方案

前段时间,有几个虚拟仿真公司跟我请教关于大地形的加载优化问题,它们使用的引擎都是自己研发的,引擎对于开发者来说,大同小异,它们的基本构造是一样的,关键是在于解决问题的方法,正是基于这个前提写了这个课程,希望给读者提供一些解决问题的思路。 目前,大地形动态加载已经成为当前游戏开发或者虚拟仿...

2018-08-07 16:29:55

阅读数:1119

评论数:5

学习3D引擎架构技术概述

      近期对3D引擎的架构设计做了一个梳理总结,现在开发游戏都离不开引擎,这些引擎包括Unity引擎,虚幻引擎,Cocos2dx引擎,自研引擎等等。很多开发者只会利用他们写逻辑,遇到优化问题就束手无策了,遇到Shader编程以及优化就感到头疼,长此以往对自己技术提升非常不利的。要改变现有的状...

2018-05-08 22:04:28

阅读数:588

评论数:0

D3D12渲染技术之向量法线

面法线是描述多边形面向的方向的单位矢量(即,它与多边形上的所有点正交); 表面法线是与表面上的点的切平面正交的单位矢量; 观察表面法线确定表面上的点“朝向”的方向。上面说的两点分别见下图所示: (a)面部法线与面部上的所有点正交。 (b)表面法线是与表面上的点的切平面正交的矢量。 对于...

2018-09-25 09:51:14

阅读数:14

评论数:0

D3D12渲染技术之灯光

灯光在引擎中占用重要地位,引擎没有灯光就是漆黑一片,见下图,左边我们有一个没有照明的球体,在右边,我们有一个点亮的球体。 正如你所看到的,左边的球体看起来很平坦 - 也许它根本不是一个球体,而只是一个2D圆圈! 另一方面,右边的球体确实看起来是3D - 照明和阴影有助于我们对物体的固体形状和体积的...

2018-09-24 10:29:38

阅读数:20

评论数:0

D3D12渲染技术之网格地形

本篇博客我们将展示一个案例, 该案例实现在程序上构造三角形网格,通过偏移顶点高度以创建地形。 此外,使用另一个三角形网格来表示水,并设置顶点高度的动画以创建波浪。 此案例还切换到使用根描述符作为常量缓冲区,这允许我们放弃对CBV的描述符堆的支持。 我们用函数y = f(x,z)实现表面,...

2018-09-23 16:14:58

阅读数:34

评论数:0

D3D12渲染技术之根签名

我们在前面的博客中介绍了根签名, 根签名定义在发出绘制调用之前需要将哪些资源绑定到管道以及这些资源如何映射到着色器输入寄存器, 需要绑定哪些资源取决于当前着色器程序所期望的资源, 创建PSO时,将验证根签名和着色器程序组合。 根参数 回想一下,根签名是由一组根参数定义的, 到目...

2018-09-22 14:27:58

阅读数:43

评论数:0

D3D12渲染技术之形状几何

在本篇博客中,我们将展示如何为椭圆体,球体,圆柱体和圆锥体创建几何体。 这些形状对于绘制天空圆顶,调试,可视化碰撞检测和延迟渲染非常有用。 例如,我们可能希望将所有游戏角色渲染为调试测试的球体。 我们将过程几何生成代码放在GeometryGenerator类(GeometryGenerator...

2018-09-21 13:46:45

阅读数:29

评论数:0

D3D12渲染技术之渲染

绘制对象需要设置多个参数,例如绑定顶点和索引缓冲区,绑定对象常量,设置基元类型以及指定DrawIndexedInstanced参数。 当我们开始在场景中绘制更多对象时,创建一个存储绘制对象所需数据的轻量级结构会很有帮助。 这些数据因应用程序而异,因为我们添加了需要不同绘图数据的新功能。 我们将提交...

2018-09-20 14:39:53

阅读数:38

评论数:0

D3D12渲染技术之帧资源

在前面博客中,我们要让CPU和GPU并行工作, CPU构建并提交命令列表(除了其他CPU工作之外),GPU处理命令队列中的命令, 目标是让CPU和GPU忙碌,以充分利用系统上可用的硬件资源。 到目前为止,在我们的演示中,我们已经每帧同步CPU和GPU一次, 为什么这是必要的两个例子是: 1、在...

2018-09-19 09:10:07

阅读数:35

评论数:0

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

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

2018-09-18 09:30:12

阅读数:38

评论数:0

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

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

2018-09-17 13:42:22

阅读数:38

评论数:0

D3D12渲染技术之编译Shader

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

2018-09-17 08:48:47

阅读数:58

评论数:0

D3D12渲染技术之常量缓冲区

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

2018-09-16 13:45:56

阅读数:85

评论数:0

D3D12渲染技术之像素着色器

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

2018-09-15 13:03:56

阅读数:49

评论数:0

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

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

2018-09-15 10:45:40

阅读数:148

评论数:0

D3D12渲染技术之顶点着色器

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

2018-09-14 08:34:52

阅读数:73

评论数:1

D3D12渲染技术之绘制网格

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

2018-09-13 13:48:25

阅读数:60

评论数:0

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