关于UE shader

关于UE shader 查询了一些别人的观点,自己做个笔记

材质=shader+贴图

unreal是否使用shader?

官方建议:不要使用,基础不好的话优化不行
如果是为了完成项目(效率高),使用材质编辑器的內置函数(足够支持99%的材质需求)
高级一点的渲染,如 烟雾,流体,使用shader(现在也可以用材质或者粒子表现出来)
材质编辑器中不能使用循环,但是可以使用时间函数time
事实上也只有在特定情况下,比如实现很复杂的材质效果,或者要用于手机平台,对性能损耗要求极高的情况下,才会自己用 hlsl 写 shader

unity什么情况下用shader?----不太清楚没学过unity
要想表现特殊的材质,比如镜面反射、水面、塑料等,就需要编程shader(Unity中有一些默认的shader)。

渲染管线
关于UE shader
shader三大语言 HLSL / GLSL / CG
HLSL:基于 OpenGL的OPENGL Shading Language —unreal
GLSL:基于 DirectX的 High LevelShading Language —微软游戏99%使用
CG: NVIDIA公司的 C for Graphic —unity

关于UE shader

GPU优越性
1:由于GPU具有高并行结构,所以GPU在处理图形数据和复杂算法方面拥有比CPU更高的效率。CPU大部分面积为控制器和寄存器,与之相比,GPU拥有更多的ALU( Arithmetic Logic Unit,逻辑运算单元)用于数据处理,这样的结构适合对密集型数据进行并行处理
关于UE shader
2:GPU采用流式并行计算模式,可对每个数据进行独立的并行计算,所谓“对数据进行独立计算”,即,流内任意元素的计算不依赖于其它同类型数据,例如,计算一个顶点的世界位置坐标,不依赖于其他顶点的位置,所谓“并行计算”是指“多个数据可以同时被使用,多个数据并行运算的时间和1个数据单独执行的时间是一样的”。所以,在顶点处理程序中,可以同时处理N个顶点数据。

GPU缺陷
由于“任意一个元素的计算不依赖于其它同类型数据”,导致“需要知道数据之间相关性的”算法,在GPU上难以得到实现个典型的例子是射线与物体的求交运算。GPU中的控制器少于CPU,致使控制能力有限。另外,进行GPU编程必须掌握计算机图形学相关知识,以及图形处理API
gpu就是并行处理强大, cpu很多功能gpu都没有。 什么指令流水化, 多进程管理之类的。GPU工作原理是cpu 处理指令,遇到需要gpu的地方, 比如矩阵处理, 图像渲染, 会在显存中开辟一个小空间, 然后把这个矩阵打成很多小数据给gpu的流水线来加工, gpu的行为基本上是靠cpu调动的, 本身的指令不够强大(数据处理方面除外)

GPU运用
科学可视化计算:绘制光线投射算法
通用算法:线性代数,物理仿真,光线追踪