济南网站建设推荐q479185700上快,专业搭建网站公司,快站app官网下载,评论优化文章目录 一、必备概念1 计算机图形程序接口2 图形接口程序与其他概念的联系 二、Shader 开发1 Shader2 Shader 开发3 需掌握的内容 一、必备概念
1 计算机图形程序接口
计算机图形程序接口#xff08;Graphics API#xff09;是一套可编程的开放标准#xff0c;不论 2… 文章目录 一、必备概念1 计算机图形程序接口2 图形接口程序与其他概念的联系 二、Shader 开发1 Shader2 Shader 开发3 需掌握的内容 一、必备概念
1 计算机图形程序接口
计算机图形程序接口Graphics API是一套可编程的开放标准不论 2D 还是 3D 游戏都需要这部分的底层 API 支持。
它本质上是软件并不是硬件是前人提前写好的调用系统硬件GPU绘制图形的代码。可以简单理解成是显卡厂商定义的一系列的底层的进行图形操作的加速 API 接口。
由于目前各种游戏引擎的出现即使没有系统的学习过图形学相关知识也能够独立的通过游戏引擎开发游戏。但是必须知道的是游戏引擎的一部分本质就是对图形程序接口的封装游戏引擎通过图形程序接口帮助完成了图像渲染相关的工作我们只需要把工作重心放在游戏逻辑开发上。 OpenGLOpen Graphics Library 开放图形库。 它定义了一个跨平台、跨语言的编程接口规格的专业图形程序接口可以用于 3D、2D 图形渲染是一个功能强大、调用方便的底层图形库。 由于它跨平台、跨语言、出现时间早因此它的应用极其广泛。 OpenGL ESOpenGL for Embedded Systems 用于嵌入式系统的开放图形库。 它是 OpenGL 的子级主要针对手机、游戏主机等嵌入式设备而设计免授权费、跨平台、功能完善。 GLES2.0、GLES3.0 指的就是 OpenGL ES 这套标准他们也是 Android 和 IOS 手机上常用的图形处理标准。 Unity 在移动平台进行图形渲染处理时就包含了 OpenGL ES 方案 Vulkan “下一代”开放的图形显示 API是与 DX12 能够匹敌的 GPU API 标准。 它有一套最新的图形加速 API 接口目标是提供更灵活和丰富的底层操作接口以替代 OpenGL 和 OpenGL ES 接口可以把 Vulkan 看做是 OpenGL 的升级版。 目前新版本的 Unity 支持使用 Vulkan 方案。 DirectxDirect eXtension 直接拓展简称 DX。 它是由微软公司创建的多媒体编程接口。它不跨平台只针对微软的相关产品被广泛使用于 Windows 操作系统、xBox 游戏主机的图形应用程序开发中。 其中的 D3D 算是 DX 一部分是对标 OpenGL 的图形程序接口 Metal 中文翻译过来是金属。 它是苹果公司为游戏开发者提供的图形技术该技术能够为 3D 图像提高 10 倍渲染性能。 但不支持跨平台主要针对 IOS、Mac OS 苹果自家的操作系统只有苹果手机、电脑能够使用。
这些图形接口程序主要是用于命令硬件完成图像渲染相关工作的。总结为
OpenGL跨平台几乎所有平台都能使用DX针对微软相关平台微软的 WindowsMetal针对苹果相关平台苹果的 Mac OS Web GL针对网页相关
主要支持的平台总结为 Windows电脑DX、OpenGL、Vulkan 苹果电脑Metal、OpenGL、Vulkan 安卓手机OpenGL ES、Vulkan 苹果手机OpenGL ES、Vulkan、Metal 网站网页Web GL 在学习计算机图形学时OpenGL是必学的内容因为它出现早、跨平台、跨语言在各主流平台中都占有一席之地。
现在使用游戏引擎开发游戏在绝大多数情况下不需要直接和图形程序接口打交道但是在 Unity 当中发布应用程序时经常会看到和它们相关的一些设置。因此必须要了解了它们的基本概念才能清楚相关的设置是什么。
注意图形程序接口还有不同的版本比如 DX10、DX11、DX12比如 OpenGL ES 2.0、OpenGL ES 3.0。
不同的设备、不同的操作系统支持的版本也是不同的。比如我们进行手机游戏开发时我们可以去查询主流移动设备支持的图形程序接口的版本来决定在发布时对于图形程序接口版本的兼容选择。这样才能保证发布的应用程序能够支持更多的移动设备。
2 图形接口程序与其他概念的联系 渲染管线流水线和图形接口程序的关系 图形接口程序OpenGL、DX 等主要用于控制和管理渲染管线流程。 通过图形接口程序提供的 API我们就可以配置和操作渲染管线中的某些阶段。设置输入数据、控制图形处理、应用各种渲染效果最终实现图形渲染和呈现。 图形接口程序充当了开发者和图形硬件之间的中间层将开发者的渲染命令和设置转化为硬件能够理解和执行的指令。 简单理解 图形接口程序OpenGL、DX等提供了对渲染管线流水线的控制和管理功能它是开发者和硬件打交道的中间层。 Shader 和图形接口程序的关系 Shader着色器是一种小型程序用于自定义渲染数据的处理从而决定最终的渲染效果。 图形接口程序OpenGL、DX 等为 Shader 开发提供了各种 APIShader 开发需要针对不同的图形接口程序使用不同的 Shader 开发语言来调用相关 API。 图形接口程序会将 Shader 程序和渲染管线的各个阶段连接起来它会把我们的数据和指令传递给硬件GPU 等从而实现图形渲染的最终呈现。 简单理解 Shader 属于图形接口程序OpenGL、DX 等的一部分。 不同图形接口程序对 Shader 开发的影响 使用的着色器语言不同 OpenGLGLSLOpenGL Shading Language DX HLSLHigh-Level Shading Language Metal MSLMetal Shading Language WebGL GLSL ESOpenGL ES Shading Language 坐标系原点不同 OpenGL、WebGL、Metal 原点位于屏幕左下角 DX原点位于屏幕左上角注意最新的 DX12 可以改为左下角原点
二、Shader 开发
1 Shader
Shader 的中文意思是着色器是一种用于描述如何渲染图形和计算图形外观的程序主要用于控制图形的颜色、光照、纹理和其他视觉效果。
着色器通常由着色器语言编写这些着色器语言提供了指令和语法用于编写描述光照、纹理映射、阴影、反射等图形外观的代码。
即Shader 是着色器是用于编写图形表现效果的程序代码。
2 Shader 开发
渲染管线流水线的基本概念是将数据分阶段的变为屏幕图像的过程。
而 Shader 开发就是针对其中某些阶段图 1 中绿色部分的自定义开发从而决定图形图像最终呈现到屏幕上的表现效果。
几何阶段 —— 顶点着色器 小阶段光栅化阶段 —— 片元着色器 小阶段 图1 渲染管线中的阶段 因此Shader 开发本质就是对渲染管线流水线中上一阶段传递过来的数据进行自定义处理后再传递给下一阶段。
通过自定义处理让图形图像最终能够以我们想要的方式显示到屏幕上。
3 需掌握的内容 数学 在渲染管线的几何阶段最主要要处理的核心工作之一就是坐标转换 向量线性代数矩阵计算 语法 需要在顶点着色器和片元着色器两个小阶段自定义处理数据来达到各种不同的表现效果。 而想要实现自定义逻辑处理就需要学习着色器开发的特定语言 ShaderLabUnityCG 语言着色器开发 着色器开发 渲染管线的本质是将数据最终呈现为屏幕图像。为了让最终的图像效果更加得好更加符合需求必须学习一些效果处理的计算规范 计算光照效果的颜色获取图片的纹理颜色处理透明效果、阴影效果 等等。