Unity Shader (五)Surface Shader示例】的更多相关文章

从今天起,开始翻译Unity关于shader的官方文档.翻译水平比较一般,目的主要是通过翻译来提升对shader的见解,也让其他人更容易的了解shader.以下开始正文内容: 编写Surface Shaders 和光交互的shader写起来很复杂,有不同的光照类型.阴影选项.渲染路径(正向渲染和延迟渲染),有时shader需要考虑所有的复杂性. Unity中的Surface Shader是一个代码生成器,用它来写光照shader(lit shader)相比于使用低阶的顶点/像素shader(ve…
Surface Shader 表面着色器 描述 当你的Material要处理光照,则一般使用Surface Shader.Surface Shader隐藏了光照的计算,你只需要在surf函数里设置好反射率.法向量等值就行.这些值会被送到Lighting model中进行计算,然后就会输出每个像素的RGB值.实际上,SurfaceShader最终会编译成VertexShader和FragmentShader,因此编写SurfaceShader可以帮我们省下许多工作. 工作方式 3D模型送入到表面着…
Surface Shader: (1)必须放在SubShdader块,不能放在Pass内部: (2)#pragma sufrace surfaceFunction lightModel [optionalparams] (3)格式 CG规定了声明为表面着色器的方法(就是我们这里的surf)的参数类型和名字,因此我们没有权利决定surf的输入输出参数的类型,只能按照规定写.这个规定就是第一个参数是一个Input结构,第二个参数是一个inout的SurfaceOutput结构. struct Sur…
https://docs.unity3d.com/Manual/SL-SurfaceShaders.html 说明: 注意下surfaceshader相关开关选项,input结构体全部可用参数 google搜不到surface shader alpha:blend的用法,就当没这个参数吧 注意下Code generation options 中说明了prepass就是legacy Deffred #pragma target 3.0    : 定义Shader模型为Shader Model 3.…
Surface Shader 光照例子 这里有一些自定义光照模型和Surface Shaders的例子.通常的Surface Shader例子在这里. 由于延迟光照在某些自定义的逐材质光照模型中表现得并不好,在下面大多数例子中,我们让shader只编译到正向渲染中. 漫反射(Diffuse) 让我们以使用内建Lambert光照模型的shader作为开始吧! Shader "Example/Diffuse Texture" { Properties { _MainTex ("T…
Surface Shader中的自定义光照模型 当你在编写 Surface Shaders 时,是在描述一个表面的属性(反射颜色.法线……),而且光的交互过程是由一个光照模型来计算的.内建的光照模型有Lambert(漫反射光照)和BlinnPhong(镜面光照). 有时候,你可能想要使用一个自定义的光照模型,这在Surface Shader中是可能的.光照模型其实就是一些满足某些约定的Cg/HLSL函数.Unity内建的光照模型Lambert和BlinnPhong定义在Lighting.cgin…
转载请注明出处:http://blog.csdn.net/candycat1992/article/details/39994049 写在前面 一直以来,Unity Surface Shader背后的机制一直是初学者为之困惑的地方.Unity Surface Shader在Unity 3.0的时候被开放给公众使用,其宣传手段也是号称让所有人都可以轻松地写shader.但由于资料缺乏,很多人知其然不知其所以然,无法理解Unity Surface Shader在背后为我们做了哪些事情. 前几天一直被…
写在前面 写这篇文章的时候,我断断续续学习Unity Shader半年了,其实还是个门外汉.我也能体会很多童鞋那种想要学好Shader却无从下手的感觉.在这个期间,我找到一些学习Shader的教程以及一些书籍.我整理在这篇博客里. 什么是Shader Shader,也就是着色器,它的工作就是读取你的网格并渲染在屏幕上.Shader可以定义一些属性,你会用它来影响渲染模型时所显示的效果.当存储了这些属性的设置时,就是一个Material,材质. Shader有以下几个种类: Surface Sha…
本系列主要参考<Unity Shaders and Effects Cookbook>一书(感谢原书作者),同时会加上一点个人理解或拓展. 这里是本书所有的插图.这里是本书所需的代码和资源(当然你也可以从官网下载). ========================================== 分割线 ========================================== 在上一篇中,我们已经向Surface Shader中添加了一些properties.在这篇教程里,我…
Unity ShaderLib :  CGPROGRAM  ENDCG之间是CG代码,之外的代码功能都由ShaderLib提供,CG中的一些方法比如tex2D(...)也是ShaderLib对CG进行了封装 SurfaceShader全部函数Demo Shader "Nafio/BaseSurf" { Properties { _MainTex("_MainTex",2D) = "white" {} _Color("Color"…