导航:首页 > 编程语言 > unityshader编程

unityshader编程

发布时间:2022-08-08 05:43:32

❶ 对于unity特效师来说,shader编程对特效有帮助吗

都有点联系,那肯定是有帮助的。

❷ 如何选择Unity 3d Shader编写语言

Metal API:有人说,Metal API是iOS的未来。如果你完全不关心Android,PC,Xbox,PS等平台,那么你的确可以奉之为圭臬。反正,Unity3d 是不支持用Metal写的,而且他们说近期也没有要去支持Metal的打算。他们只支持自动编译成Metal API,但这样你能控制的就很少。因此,这不是一个Unity开发者入门的选择。

Vulkan:有人说这才是未来。大概吧。AMD开发过一个叫做Mantle 的语言,只有很少的几个游戏用过它,然后它还死了,现在有人用它搞出了这个。人们说他们从苹果公司的Metal借鉴了一些理念,用之以完善Vulkan。很显然,Vulkan是在2015年GDC公布的,但我没有在其他任何地方听说或看到。即使它真是未来,那也是一个远到不着边际的未来。Vulkan 听起来不错,像是某种方式的梦想成真,但它甚至没有发行。只有Valve公司用过它。什么?你在Valve工作?你的上司是要支持这个技术了吗?太多问题了。此外,约翰·卡马克暗示Android可能不久会有一个类似Metal API的东西,所以Android设备的GPU甚至不需要接受它。那么,当你考虑所有事情时,就是有太多的问题围绕着它,太多的未知。无论如何,它不是Unity当下的选择。
GLSL:现在你可以在Unity里写GLSL了。Unity会将这段代码编译到任何平台,虽然你可能要在PC(或任何非iOS / Apple设备)上执行“-force-opengl”,以使之正常工作。那会导致在某些显卡GPU上,Unity Profiler不能正确地执行配置。我很想知道,是否有可能解决这问题。所以,如果你用着Mac,团队里人人用着Mac,那么相信你应该使用GLSL- 绝对是明智之选。

Surface Shaders:你可以用Unity shader库做些很酷的东西,但它不一定会在移动设备上有效果。 Shader库就像一个简化的,更易于阅读的标记语言,但你失去了你手机游戏需要的控制和性能选项。鉴于大多数在中国的工作是做手游,我不推荐这样做。
Cg/HLSL:有人说,Cg是死的语言。那么,事实是,Cg和HLSL是同一个语言,只是由两个不同的公司,NVIDIA 和Microsoft分别维护。现在NIVIDIA已停止支持Cg,没有必要啊是不,反正Microsoft在维护HLSL。人们仍然使用着Cg的名字,但愿没有人对此困惑了。 Cg/ HLSL当然没有死,在跟几个大牛以及论坛老兵聊过Unity,他们都认为HLSL是Unity shader的未来,因为公司为游戏机做了很多,为3A级提升了许多。只要看看Unity5的特性,你会懂我意思了。Cg/HLSL可以被编译到你需要的任何设备,同时Unity和微软已经亲密得像兄弟一样,并且将一直亲密下去直到地老天荒。

结论:
如果你想用Unity3d,为Windows,游戏机,Android和iOS开发游戏,并且在所有平台上表现不俗,你应该用Cg/HLSL。
如果你想用Unity3d,只做手游(不需要支持Windows或游戏机),GLSL是上选,尤其是当你用Mac电脑工作。

如果你不想用Unity3d,只希望为最新的iOS设备开发,那么Metal是最好的,尽管现在中国很少有人用它。

如果你想用cocos2d,我不是专家,但朋友说GLSL是您的最佳选择。

不过,也有,但,也许......。在中国,占主导地位的艺术风格是手绘。这并不需要很深的渲染知识,一个经验丰富的人只要做很少的工作。Shader编码为主要是为试图超越目前世代的图形,或创建特效,或避开某些图形问题。所以,你要想想是否值得学习,因为很多种游戏可能不需要这个。

❸ unity shader 好学么

如何系统的学习Unity3D中的shader编写nvidiacg编程2016-02-25UnityShader(23)相信一定也有很多做unity3d开发的朋友对shader这一块有疑问。unity3d算是比较新的引擎,最近手游又比较火,很多unity3d程序猿应该是从其他专业转过来的,比如本人以前就是搞javaweb开发的,所以对这一块的知识体系不太了解。我看了nvidia官网上的TheCgTutorial:Chapter1.Introction,算是稍微入了点门,然后看了CgProgramming/Unity中的一些例子(有很多看不懂的),结合unity3d官方文档,能写一些简单的shader,但复杂的东西就不太懂了(比如上次看到一个镜面反射的例子,里面有些矩阵运算,不太明白那算法怎么来的,当然自己线性代数不好也是硬伤)。感觉cg编程涉及的东西很多,数学、物理、编程、3D模型什么的都要懂一些,要学的东西很多很杂,有些迷茫。不想再东拼西凑找例子,这里拷一段那里拷一段的写shader,而是按照自己的想法写。请问有什么好书籍可以帮助我系统地学习这一块的知识(包括计算机图形学、数学等各个方面的书籍)?,这会是个比较漫长的学习过程(一)国内引进出版的书籍国内引进或出版的图形学书籍很多,但是大部分是糟粕,看它们是浪费时间3D数学基础:图形与游戏开发这本可以补数学基础,矩阵变换,线性代数啥的图形着色器:理论与实践(第2版)这本是比较新的讲openglshader的DirectX9.03D游戏开发编程基础这本是国内出版或引进的d3d书籍中唯一能看的(二)国内没有引进的书籍,可以下载电子版或上淘宝买打印版OpenGLShadingLanguage可以认为是glsl的圣经Introctionto3DGameProgramming:WithDirectx11可以认为是d3d11的圣经,这本是DirectX9.03D游戏开发编程基础的升级版(三)个人推荐3D数学基础:图形与游戏开发DirectX9.03D游戏开发编程基础Introctionto3DGameProgramming:WithDirectx11Vinjn张静2013-08-14还得看NVidia良心免费彩色pdf《GPUGEMSIIIIII》。这三本书十分精彩,我在当初还没免费的时候就买过了,一本一百多。vczh2014-12-06自己回答一下,再补充两本书:1.《》主要讲Unity的SurfaceShader编程技巧,非常实用。除了光照以外还有Imageeffects在Unity中的实现。强力推荐。2.《Real-TimeRendering》比较底层的内容,夯实基础(自己还没看完)发现了新的好书再继续更新!kUANGtOBY2014-12-06最近也在学习shader,推荐几篇博客供题主入门。1、首先来两篇最最基础文章对shader有大体的认识。这两篇文章会分析shader中的一行行代码,讲解语法和作用并加以扩展。读完后就基本了解了shader中的属性、Tags、LOD、光照模型等是怎么回事。猫都能学会的Unity3DShader入门指南(一)猫都能学会的Unity3DShader入门指南(二)2、然后可以看《UnityShaderandEffectCookbook》,或者它的中文版《Unity着色器和屏幕特效开发秘笈》。这本书会展示shader中的各个方面,如漫反射着色、纹理贴图、镜面反射等等。可能由于这本书方方面面都有涉及,有时会忽略一些比较关键的细节,而这恰恰使初学者困惑。有一位博主记录下了根据这本书学习的笔记,题主可以直接看博客来学习:【UnityShaders】概述及DiffuseShading介绍3、在第2步的过程中,你可能需要查阅shader中各个概念函数的更详细的情况,这时你会需要Unity官方手册以及Cg教程:Unity-Manual:ShadersUnity-Manual:ShaderReferenceTheCgTutorial4、学习shader的时候,你不仅想知道怎么用,可能还想了解它背后的机制,那这篇文章你肯定不能错过:【UnityShaders】初探SurfaceShader背后的机制5、这些都熟练了,对shader也都比较熟悉了。你可以尝试去创造属于自己的shader,也可以去ShadertoyBETA寻求灵感,感受shader的鬼斧神工。匿名2015-05-23推荐一本书,UnityShaderandEffectCookbook,但一般的Shader都可以用ShaderForge搞定。ShaderForge是一个可视化的,nose-based的shader编辑器。简单来说,就是你在图形化界面把各种effect按一定逻辑连接好,它可以自动生成shader的代码。JingwenZhao2014-11-13仅针对你只想学些shader编程来讲:1、先要明白shader在整个3D流水线中的地位或者是作用,建立流水线概念的过程,是理解整个当代3D的基础。2、把Unity当做shader编辑器,这一方面讲,unity的确也是不错的,:)。由简到难的分析和实验各个shader,调试各种参数,用unity的所见即所得界面,了解shader内部代码的意义。3、就每个遇到的问题,在互联网上查找该问题的可能的答案。如Diffuselight的算法公式究竟是什么,shadowmap的矩阵干嘛用的。在这块上,请尽量查找英文资料,会痛快些。就这么三点,第一点是面,能帮助自己确定方向。第三点是点,知道自己的短线位置在哪里。书籍不举例,只知道我第一本看的书是《3D游戏编程大师技巧》。后来在各种查找过程中,各种不同的书籍自然会进入自己的腰包,没有一本是需要全部读完的。但是读完所有的每本的某一个部分,应该每本书都算是读完了,你明白的。匿名2013-08-17unity的shader浅浅的包装了一下cg。类似fx。总之就是一个DSL,对cg和渲染流程做了一些描述。所以基本上,你还是需要了解shader语言及基本的渲染流程。@张静vinjn和@kUANGtOBY提到的书对头。速学的话,我补充一本:《》。国内的人写的小册子,很不错。知道2014-06-12这个网站可以参考ShadertoyBETA不过是同样的问题,因为很多代码都是式子,是经过计算之后得出的,计算过程在代码里没有体现,所以根本不知道那些奇怪的数字和算式都是怎么来的。殷实2014-07-23数学推荐这部——《》另外就是看看这个推荐游戏程序员养成计划(更新2013.3.19)老钟古2014-02-20我比较推荐《交互式计算机图形学:基于OpenGL的自顶向下方法(第6版)》配合《计算机图形学/基于3D图形开发技术》食用风味更佳。学习shader会遇到一些比较基础的数学问题,google、wiki和度娘基本能够解决。匿名2014-06-12《》其实这本书是surfaceshader的入门,我确实是先看了这本书,还不是特别实用,但也必须要看,它有解释一些入门的知识比如pipeline,常见语法。。那本书完全没有涉及cg语言,vertex和fragshader,个人觉得有一本不错,比较系统,就是《CgProgramminginunity》。然后“龙书”多少也着看,还有各种高数线性代数书籍跟着研究,有空多拿其他人的shader打开来看,并且在相关技术qq群贴吧等平台,利用好这些平台资源获取大神的解答。。这是我的路,也是新手爬坑中,以供参考。。互勉!周车2015-06-29

❹ 如果系统学习Unity3D的shader,都需要学习哪些知识

计算机基础》原理》图形学》OPENGL》渲染PIPELINE》SHADER语言

❺ shader编程怎么学

学习方法

(1)由简入繁:自己写Shader,从最简单写起,简单的测试通过了,再一点点往里加。
(2)多调试:例如,有一个float变量x。假如x范围是[0,1],则在frag片段函数里输出 float4(x,0,0,1)的颜色,以红色的深浅来观察x的值;如果x范围是[0,1000],则可在frag片段函数里输出 float4(x/1000,0,0,1)的颜色。方法就这么简单,具体根据需要去调整。
(3)结合查看UnityCG.cginc等文件,以及unity的自带Shader,即Build-in Shader。
Build-in Shader下载地址
(4)看看书:建议看本教程的同时,多看看书。推荐英文的The CG Tutorial,也就是中文版的Cg教程_可编程实时图形权威指南
相关教材链接

学习小技巧
(1)查看UnityCG.cginc等文件
使用Vertex and Fragment的CG时,会#include "UnityCG.cginc",用到里面的很多函数,如TRANSFORM_TEX,UNITY_TRANSFER_DEPTH等函数的定义。那么怎么查看这些定义呢?

windows路径:Unity\Editor\Data\CGIncludes
mac路径:右键点击unity图标->show contents->Data->CGIncludes
文件夹下有Unity关于Shader的库,如UnityCG.cginc,UnityCG.glslinc,Lighting.cginc等。打开
UnityCG.cginc(写字板MONODev等均可),后即可查看相关函数的定义。

(2)电子书的学习技巧
中文电子书,学起来快,好理解,但大多数是影印版。
英文电子书,可以很好的用关键词搜索知识点。

(3)使用#prama only_renderers d3d9 , 限定编译平台。(3)(4)配合使用效果更好

(4)打开编译后的Shader,查看对应的汇编代码或者OpenGL ES代码。
方法:左键单机shader文件,然后在Inspector面板里点击Open Compiled Shader.

❻ unity怎么编辑shader

有个插件叫做Shader Forge 可以可视化的编辑shader效果 不过效率可能没那么高
也可以自己学一下shader的语言然后再编辑

❼ 求《Unity3DShaderLab开发实战详解》全文免费下载百度网盘资源,谢谢~

《Unity 3D ShaderLab开发实战详解》网络网盘pdf最新全集下载:
链接:https://pan..com/s/1JHbc-gxaAZKJ4F8MJSzSPg

?pwd=mis3 提取码:mis3
简介:《Unity 3D ShaderLab开发实战详解》全面讲解了Unity Shader渲染的实战技术,全书分为五篇共33章,主要内容为:Shader在3D游戏中的作用、Shader的实例化、Shader的实现语言等;Unity中Shader的形态、SubShader的重要标签、可编程Shader、Surface Shader;Shader中用到的各种空间的概念和Shader中的投影矩阵;基本的光照模型;被执行的Pass,包括渲染路径和Pass的LightMode标签;VertexLit渲染路径,包括顶点照明和Unity存放光源的方式;Forward渲染路径;基于光照贴图的烘焙照明;基于LightProbes的照明;□面阴影;球体阴影;体积阴影;映射阴影;内置的阴影;Pass的通用指令开关;固定管线;Surface Shader;凹凸材质;卡通材质;镜面材质;半透明材质;体积雾;Wrap Model新解;面积光;体积光;材质替代渲染;后期效果;地形;投影;Shader的组织和复用。和你必须知道的渲染概念及基于渲染路径的优化、移动□台上的优化等实战内容,是不可多得的实战教程。

❽ 请问在Unity的像素Shader里返回的颜色的计算模式是什么样的

已知颜色A与颜色B,颜色B覆盖在颜色A上,最终输出的结果为颜色C。
A为缓存色,B为当前色,C为输出色
【正常透明度混合】-
描述:正常透明度混合
公式:当前颜色 x 当前透明度 +(1 - 当前透明度)x 缓存颜色
shader:fixed4 C = B x B.a + A x (1 - B.a);
【正片叠底】-
描述:颜色叠加,使像素重合部分的颜色更暗。像素覆盖顺序随意调换不会改变结果
公式:当前颜色 x 缓存颜色
shader:fixed4 C = A * B;
【滤色】-
描述:与正片叠底相反,重合部分的像素更亮
公式:1 - (1-当前颜色)x (1-缓存颜色)
shader代码:fixed4 C = 1 - (1 - A) * (1 - B);
【叠加】 - -
描述:结合滤色与正片叠底,基色的像素重合部分比较亮的会更亮,比较暗的会跟暗
公式:如果当前颜色 <= 0.5 返回1,否则返回 0 该值记做 w;
w x 缓存色 x 当前色 x 2 + (1 - w) x (1 - (1 - 缓存色) x (1 - 当前色) x 2)
shader代码:
if(A > 0.5){
fixed4 C = 1 - 2 * (1 - A) * (1 - B);
}else{
fixed4 C = 2 A B;
}
【反色】
描述:取得与缓存色相反的颜色
公式:1 - 缓存颜色
shader代码:fixed4 C = 1 - A;
【变暗】-
描述:缓存颜色 x 缓存颜色与当前颜色中最小的那个
公式:缓存颜色 x min(缓存颜色,当前颜色)
shader代码:fixed4 C =A * min(A,B) ;
【变亮】-
描述:缓存颜色 x 缓存颜色与当前颜色中最大的那个
公式:缓存颜色 x max(缓存颜色,当前颜色)
shader代码:
fixed4 C =A * max(A, B) ;
【减色】
描述:缓存颜色减掉当前颜色的值
公式:缓存颜色 - 当前颜色
shader代码:fixed4 C = A - B;
【划分】
描述:缓存颜色除当前颜色的值
公式:缓存颜色 / 当前颜色
shader代码: fixed4 C = A / B ;
【颜色加深】
描述:
公式:缓存颜色 - ((1 - 缓存颜色) x (1 - 当前颜色)) / 缓存颜色
shader代码:fixed4 C = A - ((1-A) * (1-B)) / B;
【颜色减淡】
描述:
公式:缓存颜色 + ((缓存颜色 x 当前颜色) / (1 - 当前颜色))
shader代码:fixed4 C = A + (A * B) / (1 - B);
【线性加深】
描述:
公式:当前颜色 + 缓存颜色 - 1
shader代码:fixed4 C = B + A -1;
【线性减淡】
描述:
公式:缓存颜色 + 当前颜色
shader代码:fixed4 C = A + B;
【强光】
描述:
公式:如果当前色 <= 0.5 返回1,否则返回0,记作w;
w x 缓存色 x 当前色 x 2 + (1 - w) x (1 - (1 - 缓存色) x (1 - 当前色) x 2);
shader代码:
fixed4 ifFlag= step(B, fixed4(0.5, 0.5, 0.5, 0.5));
fixed4 C = ifFlag * A * B * 2 + (1 - ifFlag) * (1 - (1 - A) * (1 - B) * 2);
【柔光】
描述:
公式:如果当前色 <= 0.5 返回1,否则返回0,记作w;
w x 缓存色 x 当前色 x 2 + (1 - w) x (1 - (1 - 缓存色) x (1 - 当前色) x 2);
shader代码:
fixed4 ifFlag = step(B, fixed4(0.5, 0.5, 0.5, 0.5));
fixed4 C = ifFlag * (A * B * 2 + A * A * (1 - B * 2)) + (1 - ifFlag) * (A * (1 - B) * 2 + sqrt(A) * (2 * B - 1));
【亮光】
描述:
公式:如果当前色 <= 0.5 返回1,否则返回0,记作w;
w x (缓存色 - (1 - 缓存色) x (1 - 2 x 当前色) / (2 x 当前色)) + (1 - w) x (缓存色 + 缓存色 x (2 x 当前色 - 1) / (2 x (1 - 当前色)));
shader代码:
fixed4 ifFlag = step(B, fixed4(0.5, 0.5, 0.5, 0.5));
fixed4 C = ifFlag * (A - (1 - A) * (1 - 2 * B) / (2 * B)) + (1 - ifFlag) * (A + A * (2 * B - 1) / (2 * (1 - B)));
【点光】
描述:
公式:如果当前色 <= 0.5 返回1,否则返回0,记作w;
w x (min(缓存色, 2 x 当前色)) + (1 - w) x (max(缓存色, ( 当前色 x 2 - 1)));
shader代码:
fixed4 ifFlag = step(B, fixed4(0.5, 0.5, 0.5, 0.5));
fixed4 C = ifFlag * (min(A, 2 * B)) + (1 - ifFlag) * (max(A, ( B * 2 - 1)));
【线性光】
描述:
公式:缓存色,+ 2 x 当前色 - 1;
shader代码: fixed4 C=A+2*B-1;
【实色混合】
描述:
公式:如果当前色 + 缓存色 <= 1 返回1,否则返回0,记作w;
w x (0) + (1 - w) x (1);
shader代码:
fixed4 ifFlag = step(A + B, fixed4(1, 1, 1, 1));
fixed4 C = ifFlag * (fixed4(0, 0, 0, 0)) + (1 - ifFlag) * (fixed4(1, 1, 1, 1));
【深色】
描述:
公式:如果当前色的rgb分量 + 缓存色 <= 1 返回1,否则返回0,记作w;
w x (0) + (1 - w) x (1);
shader代码:
fixed4 ifFlag = step(B.r + B.g + B.b, A.r + A.g + A.b);
fixed4 C = ifFlag * (B) + (1-ifFlag)*(A);
颜色制式
RGBA :红、绿、蓝、透明度
HSL: hue(色相)、saturation(饱和度)、lightness(亮度)
HSV: hue(色相)、saturation(饱和度)、value(色调)
HSB: hue(色相)、saturation(饱和度)、brightness(明度)

❾ 求《渲染管线与UnityShader编程》课程,tx课堂上的


Unity中的Shader通常来说叫做UnityShader,相对来说他有自己的相对语法UnityShaderLab。

如果你想学好Shader编程的话,有几个步骤你是少不了的:

  1. 你需要学习GPU编程、CG、渲染管线和相对应的知识。

  2. CG相关知识

  3. 渲染管线

  4. 数学及物理知识,尤其线性代数比较重要,当然矩阵这套东西也不能丢掉。

  5. 如果你是初学的话,有本书可以推荐给你 Unity Shader入门精要,这个比较简单,适合入门。

❿ 如何系统的学习 Unity 3D 中的 shader 编写

最近也在学习shader,推荐几篇博客供题主入门。

1、首先来两篇最最基础文章对shader有大体的认识。这两篇文章会分析shader中的一行行代码,讲解语法和作用并加以扩展。读完后就基本了解了shader中的属性、Tags、LOD、光照模型等是怎么回事。
猫都能学会的Unity3D Shader入门指南(一)
猫都能学会的Unity3D Shader入门指南(二)

2、然后可以看《Unity Shader and Effect Cookbook》,或者它的中文版《Unity着色器和屏幕特效开发秘笈》。这本书会展示shader中的各个方面,如漫反射着色、纹理贴图、镜面反射等等。
可能由于这本书方方面面都有涉及,有时会忽略一些比较关键的细节,而这恰恰使初学者困惑。有一位博主记录下了根据这本书学习的笔记,题主可以直接看博客来学习:
【Unity Shaders】概述及Diffuse Shading介绍

3、在第2步的过程中,你可能需要查阅shader中各个概念函数的更详细的情况,这时你会需要Unity官方手册以及Cg教程:
Unity - Manual: Shaders
Unity - Manual: Shader Reference
The Cg Tutorial

4、学习shader的时候,你不仅想知道怎么用,可能还想了解它背后的机制,那这篇文章你肯定不能错过:
【Unity Shaders】初探Surface Shader背后的机制

5、这些都熟练了,对shader也都比较熟悉了。你可以尝试去创造属于自己的shader,也可以去Shadertoy BETA寻求灵感,感受shader的鬼斧神工。

阅读全文

与unityshader编程相关的资料

热点内容
现代钢琴教程pdf 浏览:23
客户端框架源码 浏览:206
python自动办公能干嘛 浏览:873
程序员追爱 浏览:252
程序员逻辑故事 浏览:768
加密icsot23i2c 浏览:713
你们有什么好的解压软件 浏览:607
常州空气压缩机厂家 浏览:241
安卓如何关闭app内弹出的更新提示 浏览:409
e4a写的app怎么装苹果手机 浏览:201
海立压缩机海信系 浏览:210
社保如何在app上合并 浏览:220
小米加密照片后缀 浏览:236
我的世界网易手机怎么创服务器 浏览:978
载入单页源码 浏览:930
阿里云服务器seo 浏览:777
海洋斗什么时候上线安卓 浏览:86
中行app如何查每日汇款限额 浏览:840
输入服务器sn是什么意思 浏览:725
sha1算法java 浏览:90