GPU的openGL、D3D、vulkan相关知识和shader Model

Vulkan 原文链接:https://geek-docs.com/vulkan/vulkan-tutorial/what-is-vulkan.html
openGL、D3D、vulkan区别简介
原文链接:https://blog.csdn.net/chenweiyu11962/article/details/108268486
Shader Model是什么
原文链接:https://product.pconline.com.cn/itbk/diy/graphics/1109/2521875.html

什么是 Vulkan
Vulkan是一个用于图形和计算设备的编程接口,Vulkan是一个跨平台的2D和3D绘图应用程序接口(API),最早由科纳斯组织在2015年游戏开发者大会(GDC)上发表。科纳斯最先把VulkanAPI称为“次世代OpenGL行动”(next generation OpenGL initiative)或“glNext”,但在正式宣布Vulkan之后这些名字就没有再使用了。就像OpenGL,Vulkan针对实时3D程序(如电子游戏)设计,Vulkan并计划提供高性能和低CPU管理负担(overhead),这也是Direct3D12和 AMD 的 Mantle 的目标。Vulkan兼容 Mantle 的一个分支,并使用了 Mantle 的一些组件。
##############################################################################

原文链接:https://blog.csdn.net/chenweiyu11962/article/details/108268486
openGL、D3D、vulkan区别简介
平台之王——OpenGL
OpenGL发展至今,已经有20余年,作为一个成熟并久负盛名的跨平台计算机图形应用程序接口规范,它被广泛使用在游戏、影视、军事、航空航天、地理、医学、机械设计,以及各类科学数据可视化等领域,也演变出各种版本不过都是基于opengl的比如嵌入式中的OpenGL ES,又基于OpenGL ES发展而来的web端也是H5现在最重要的WebGL,WebGL又是为H5 提供了画布功能,同样的都是基于js的框架 WebGl都有three.js cesium badylon.js等等框架应用场景也都不一样,他们的介绍在我博客中有介绍three.js cesium badylon.js 以及webgl区别;
OpenGL可以用来做什么?视频、图形、图片处理 ,2D/3D游戏引擎开发,科学可视化,医学软件开发,CAD(计算机辅助技术),虚拟实境(AR,VR),AI(人工智能);
OpenGL是一种图形应用程序编程接口(Application Programming Interface,API)。它是一种可以对图形硬件设备特性进行访问的软件库,OpenGL被设计为一个现代化的、硬件无关的接口,因此我们可以在不考虑计算机操作系统或窗口系统的前提下,在多种不同的图形硬件系统上,完全通过软件的方式实现OpenGL的接口。
OpenGL还提供了:
在这里插入图片描述

基于Windows平台开发者——D3D
Direct3D(简称:D3D)与DirectX的关系DirectX,由微软创建的多媒体编程接口,是由很多API组成,按照性质分类,分为:显示部分、声音部分、输入部分和网络部分,其中显示部分担任图像处理关键,其中D3D就是其中的一部分。
D3D主要负责3D效果的显示,例如CS中的场景和人物就使用了DirectX的D3D,它与OpenGL同为电脑绘图软件和电脑游戏最常用的两套绘图编程接口之一。,最重要的版本是D9、D11\D12是很大的不同版本;以下是D3D的官网;
Microsoft的D3D组件、其他Microsoft DirectX、操作系统和系统硬件之间的关系:
HAL(硬件抽象层)提供设备独立;HAL是由设备制造商提供的设备指定接口,D3D直接使用显示硬件来工作。程序才能不需要和HAL交互。应用程序使用D3D暴露的一系列接口和方法而不是HAL提供的机制来使用显示设备。 3D程序和GDI程序一样都通过显示卡的设备驱动来访问图形硬件。与GDI不同的是,D3D可以在选择一个HAL设备的时候利用硬件特性,HAL设备提供了基于显示卡支持的硬件加速
在这里插入图片描述

这里特别强调:说道D3D就不得不说GDI,同样是微软的亲儿子有什么不同?
都是用的显卡加速,区别最大的是D3D支持显存位图,GDI中位图只能是内存,而且D#D处理方式更加贴近硬件解析更快,GDI已经丧失了加速!

OpenGL的替代者——VulkanVulkan
Vulkan是Khronos组织制定的“下一代”开放的图形显示API,是与DirectX12可以匹敌的GPU API标准。Vulkan是基于AMD的Mantle API演化而来,目前Vulkan 1.0标准已经完成并正式发布。Vulkan是一个跨平台的2D和3D绘图应用程序接口(API),最早由科纳斯(Khronos)组织在2015年游戏开发者大会(GDC)上发表。旨在替代OpenGL,提高图形性能。
相对于OpenGLVulkan的优势:

更简单的显示驱动( Vulkan提供了能直接控制和访问底层GPU的显示驱动抽象层,
显示驱动只是对硬件薄薄的封装,这样能够显著提升操作GPU硬件的效率和性能。之前OpenGL的驱动层对开发者隐藏的很多细节,现在都暴露出来。Vulkan甚至不包含运行期的错误检查层。驱动层干的事情少了,隐藏的bug也就少了)
支持多线程(
Vulkan不再使用OpenGL的状态机设计,内部也不保存全局状态变量。显示资源完全由应用层负责管理,包括内存管理、线程管理、多线程绘制命令产生、渲染队列提交等。应用程序可以充分利用CPU的多核多线程的计算资源,减少CPU等待,降低延迟。
带来的问题是,线程间的同步问题也由应用程序负责,从而对开发人员的要求也更高)
预编译shader(这个非常强!驱动层不提供前端shader编译器,只支持标准可移植中间表示二进制代码(SPIR-V)。即提高了执行Shaders的效率又增加了将来着色语言的灵活性。所以目前的GLSL/HLSL可以直接通过工具转换为SPIR-V,在Vulkan中使用。这样就可以使用离线的shader编译。另外,SPIR-V还支持OpenCL!)
CPU与GPU、OPENGL、DX、显卡驱动间的关系:
在这里插入图片描述

如果是一个新手的话,不建议直接学习vulkan,vulkan的使用门槛很高,需要对硬件驱动框架有一个比较综合的认识,并且vulkan的环境很难搭建,极容易让新人产生挫败感,从而兴趣。opengl的入门相对容易,对新人很友好,由于是学习阶段,因此也不用太关心opengl的性能/多线程问题,在使用的过程中可以加深去底层驱动及硬件架构的认识,在有了一些的基础之后再入手vulkan会更加容易
————————————————
版权声明:本文为CSDN博主「微小的鱼」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/chenweiyu11962/article/details/108268486
##############################################################################
原文链接:https://product.pconline.com.cn/itbk/diy/graphics/1109/2521875.html

Shader Model是什么

Shader Model(在3D图形领域常被简称SM)就是“优化渲染引擎模式”。Shader(渲染或称着色)是一段能够针对3D对象进行操作、并被GPU所执行的程序。通过这些程序,程序员就能够获得绝大部分想要的3D图形效果。在一个3D场景中,一般包含多个Shader。这些Shader中有的负责对3D对象表面进行处理,有的负责对3D对象的纹理进行处理。

Shader Model的作用:

Shader(渲染或称着色)是一段能够针对3D对象进行操作、并被GPU所执行的程序。通过这些程序,程序员就能够获得绝大部分想要的3D图形效果。极大方便了程序员编写代码以及更高速实现各种特效。

Shader Model的版本:

时至微软发布DirectX 10.1之后,Shader Model 已经有五个版本了:分别是Shader Model 1.0(DirectX8.0)、Shader Model 2.0(DirectX9.0b)、Shader Model 3.0(DirectX9.0c)、Shader Model 4.0(DirectX10)、Shader Model 4.1(DirectX10.1)和Shader Model 5.0(DirectX11)未来还在不断更新。

Shader Model的发展:

SM 1.0到SM 2.0:真正意义上的技术革命,SM2.0赋予了显示芯片强大的能力,人们在游戏中也领略到前所未有的视觉体验,例如水面光影和雾化等特效的出现使游戏场景更真实。

SM 2.0到SM 3.0:SM 3.0除了支持32bit浮点运算是亮点外,其他特效用SM 2.0也可以完成。等于对SM 2.0的优化版本。

SM 3.0到SM 4.0:最大指令数从512条增加到了64000条;临时暂存器数量也从原先的32个增加到4096个;允许同时对128个Texture进行操作;材质texture格式变为硬件支持的RGBE格式,摒弃了以往需要专门decoding处理HDR渲染的流程,极大提高HDR效率。8192x8192的最高纹理分辨率比原先最高2048x2048的分辨率要高出4倍。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值