图形学工程师,图形/图像处理(渲染库OpenGL、GPU编程语言、Shader)

-- 图形学工程师
1.渲染执行流程;
2.Shader 编程技巧;
3.材质渲染案例;
4.后处理渲染案例;
5.Shader 编程优化案例;

-- 图形学编程- https://blog.csdn.net/jxw167/article/category/6624969

如何快速成长为图形学工程师- https://blog.csdn.net/GitChat/article/details/79102568 
OpenGL核心技术- https://blog.csdn.net/column/details/14637.html
Google Android多媒体和图形图像- https://github.com/google/grafika
学openGL必知道的图形学知识- http://blog.csdn.net/king1425/article/details/71425556

图形算法中的矩阵和矢量。编写OpenGL图形算法的语言GLSL。

android图像处理的知识,主要是Bitmap,Canvas,Shader,Matric,ColorFilter和Xfermode的使用。

-- 图形渲染库,GPU 编程(Shader 编程)

  图形渲染库有 DX(DirectX)、OpenGL、OpenGLES、WebGL。
  实现渲染技术就需要对 GPU 编程,也就是我们通常说的 Shader 编程。
  Shader 编程其实就是对图像进行编程,常见的图像格式有:jpg、png、tga、tga、bmp 等.
  作为图形学开发者首要的事情是搞清楚它们的存储格式,每种图像格式它包括很多信息,当然主要还是颜色的存储:rgb 或者说 rgba,另外图像的存储是按照矩阵的方式.
  对 GPU 编程核心就是对图像的处理,只有掌握了它们,我们才可以根据策划的需求或者是美术的需求做出各种渲染效果,比如在材质中剔除黑色,进行反射,折射,以及高光、法线等的渲染。
  即使是后处理渲染又称为滤镜的渲染也是对图片像素的处理,与材质渲染不同的是它是对整个场景的渲染,因为游戏运行也是通过一帧一帧渲染的图片播放的,后处理就是对这些图片进行再渲染。
  从固定流水线讲起,作为图形学开发是必须要掌握的,因为固定流水线是图形学渲染的基础,它们的核心是各个空间之间的矩阵变换。固定流水线是 3D 游戏引擎开发的最基本的底层核心。
  通俗的讲,固定流水线的原理就是将 3D 图形转换成屏幕上的 2D 图像显示的过程,在此过程中都是通过 CPU 处理的,以前那些比较老的 3D 游戏都是按照这个原理制作的。
  可编程流水线主要是针对 GPU 编程的,换句话说就是将固定流水线的矩阵变换放到 GPU 中进行计算,这样可以彻底解放 CPU 用于处理其他事情,提升效率。

> GPU 编程语言目前有 3 种主流语言:
1.基于 OpenGL 的 GLSL(OpenGLShading Language,也称为 GLslang)
2.基于 Direct3D 的 HLSL(High Level ShadingLanguage)语言,
3.NVIDIA 公司的 Cg (C for Graphic)语言。

   GPU 比较擅长做的就是关于矩阵的运算。GPU 不仅能用于渲染材质,而且还能渲染场景也就是我们说的后处理,又称为滤镜。
   Shader 的核心用法就是材质渲染,材质渲染无非涉及到材质高光,法线这些点,还有反射,折射,卡通渲染,描边等等,以及 Unity 高版本实现的 PBR 物理效果。 Shader 渲染都是基于图像的处理方式,不论是材质渲染还是后处理渲染.
   现在比较流行的 H5 游戏,它使用的渲染库是 WebGL,WebGL 提供了相应的接口,用于加载已有的 Shader,当然 OpenGL,DX 都提供了相应的接口。像 Bloom(全屏泛光)这些后处理渲染效果,在游戏场景中是必备的渲染,它们的实现方式都是在 GPU 中实现的。
Shader Forge教程一:http://blog.csdn.net/jxw167/article/details/69267236
Shader Forge教程二:http://blog.csdn.net/jxw167/article/details/69257559

mpeg的帧头和格式。帧头的帧同步。ijkplayer是基于ffplay改造的。
- 图像性能 openGL?GPUImage(OpenGL ES)的性能优化、爬坑与架构改善
GPU OpenGL ES 应用性能优化- https://blog.csdn.net/dongtinghong/article/details/80081404
OpenGL ES优化的主要工作是在图形管道中找到影响性能的bottleneck,其bottleneck一般表现在以下几方面:
1.在应用程序代码中,如冲突检测
2.GPU与主内存间的数据传输
3.在VP(Vertex Processor)中的顶点处理
4.在FP(Fragment Processor)中的片断处理

  无论OpenGL ES、Metal还是Vulkan,优化都是两块:CPU和GPU。目标是减少CPU调用、降低I/O以及简化Shader代码中的复杂逻辑。
  GPUImage的实现里没使用VBO,当多个Filter叠加时,每个Filter绘制都需要上传坐标数据会带来额外的消耗。对GPUImage进行二次开发,在GPUImageFilter中创建VAO及VBO,对于某一Filter需要旋转图像,可在其自己的着色器中使用旋转矩阵达到目的。
  Shader优化:

Shader代码实现了我们的算法,想要大幅降低Shader的耗时,降低图像质量实现减少计算量是最有效的办法。在尽量可能保证质量的基础上进行优化,一般有这些办法:
(1)避免在Shader中使用循环或分支判断语句
(2)避免依赖纹理读取。即,避免在Fragment Shader计算纹理坐标,将计算提前到Vertex Shader,减少计算次数。
(3)避免交换纹理坐标分量。这会造成依赖纹理读取。
(4)避免在Fragment Shader做pow等数据计算。同样的,尽可能将计算提前到Vertex Shader,减少计算次数
(5)使用更少的颜色分量参与计算。选择影响结果的主要颜色分量参与计算,这也是减少计算量的有效方法。
(6)降低数据精度。比如,从Vertex Shader传递到Fragment Shader的纹理坐标精度从highp改成mediump也会降低一些消耗。
  如今,计算机拥有用来专门做图像处理显示的GPU模块,拥有独立的图像处理储存(显存)。

- 3D图像渲染管道包括以下几个主要步骤:
 1,顶点处理:对模型的各个顶点进行计算(着色)以及坐标变换
 2,光栅化:将每个图元转换为一系列的碎片。我们可以认为一个碎片就是三维空间中的一个像素,同样具有位置,颜色,法线和纹理属性。
 3,碎片处理:光栅化之后,我们得到一些列的碎片,这个阶段则是对碎片进行处理(着色)
 4,合并输出:将所有的碎片(3D概念中)转化成二维的颜色像素,最后输出显示到屏幕上

注:如果读者对矩阵变换不理解可以查看《线性代数》和《3D 数学基础:图形与游戏开发》

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值