shader回顾01 --- shader"硬件"基础

时间:2021-11-14 04:54:36

unity的tolua框架已经写完了,已经在真机上测试过热更新表示很满意。整个框架包括底层UI的管理,事件系统,场景管理,资源打包管理,资源跟新http,网络socket......(还没有整理,和这前的c#框架代码混在一起)。框架这东西其实说难不难并不是太底层的东西,只是考验一个人对代码的组织能力和系统的把握,好了这个框架会在以后的小游戏用上。

话不多说,今天开始真真找工作,面试(确实自己的表达能力有限啊,叫我写代码还可以,说真的要多练练)了一家公司上来就问shader,预料中....。之前学习shader也只是重网上的博客看,可以说很杂。而且不是连着看,断断续续。而且篇幅很长,看着有种读长篇小说的感觉。不知道从什么时候开始喜欢上写博客这东西,开个小编写写回顾shader,这个不是shader专题只是一个回顾,将脑子里面的东西满满一点点消化和学习。重要就是并不能说写的东西全对,自己本生能力有限,shader实在是博大精深,有错改就是。

今天的标题是shader“硬件”基础。什么叫“硬件”呢?打了双引号就不多说了并不是真硬件,这里值需要知道的一些概念东西。

比如今天面试问到的CPU与GPU的区别,什么是shader,OpenGL,怎么理解固定管线,现在的shader编程有哪几种都有什么特点,shader,材质,贴图的关系是什么....那么就回顾下自己的答案吧,并不会长篇大论说,我答案一直很简单,错了就改。

CPU : 这个估计有电脑的都知道这个是什么吧,它和GPU的区别就是拥有跟多的存储单元。

GPU:图像处理器和CPU相比拥有更多的逻辑单元,支持数据并行运算。

shader : 着色器,其实就是可编程管线的算法片段,说白了就是运行的一小段代码片段。现在的shader大概分三种,fix function shader, surface sahder ,顶点片段shader.

fix function shader : 固定管线编程shader,都说固定那么使用最少,扩展最低,更多是对硬件操作,就好像单片机编程一样通过一些指令去打开或者关闭某种功能一样。

surface shader :这个是unity推荐的shader编程,使用性比较广,简单。

顶点片段shader: 计算机最终能识别的shader,个人理解上面的surface shader也会转成这个shader,其功能强大,扩展性强。

OpenGL : 跨平台图像可编程接口api。  DirectX :只在支持window平台的多媒体编程接口

固定管线 : 渲染留水线,就是机器渲染时候的流程,比如一个工厂里面的没个组件在一个房间做完某部再转到下部。

材质就是产品,贴图就是原材料,shader就是对原材料进行加工的算法。

说说culing,Depth Test个人理解?我理解就是culling就是裁剪,Depth Test 就是深度测试,裁剪就是说在编程shader时候可以指定不能看到的面对其进行剔除,不渲染,深度测试就是说在编写shader时候指定值远离摄像机的地方可以不显示也就是剔除了,这样做好处就是加快了渲染。

什么情况下使用Alpha Test ? 绘制半透明物体时。

现在流行的shader编程语言哪几种?(悲剧,悲剧,悲剧......)CG (只想到这个其实还哟HLSL,GLSL)

后面还有些关于光照的公式,CG基础,shader语法,留到后面自己写总结。

........

今天就到这吧。