shader开发_5.Surface shader官方例子(注释版本)

上一章unity 默认生成了一个 surface shader 这里来了解一下它

 1 Shader "Custom/myshader01" {          //shader的路径名称
 2     Properties {                   //资源属性代码块
 3         _Color ("Color", Color) = (1,1,1,1)  //定义一个纯白不透明
 4         _MainTex ("Albedo (RGB)", 2D) = "white" {} //2D贴图(可在面板进行赋值)
 5         _Glossiness ("Smoothness", Range(0,1)) = 0.5 //【光泽度】Range 表示一个范围 后面的=表示默认值
 6         _Metallic ("Metallic", Range(0,1)) = 0.0      //【金属强度】Range 表示一个范围 后面的=表示默认值
 7
 8     }
 9     SubShader {                                       //SubShader的路径名称
10         Tags { "RenderType"="Opaque" }//标签,通过设置的标签决定什么时候渲染(这里表明在渲染不透明物体时渲染)
11                 LOD 200 //  与unity Quality Settings  关联 如果Quality Settings指定小于当前设定 这此shader不可用
12         CGPROGRAM                          //CG语言标记开始
13         // Physically based Standard lighting model, and enable shadows on all light types
14         #pragma surface surf Standard fullforwardshadows  //编译指令  surf 自定义函数 关照模型 [阴影类型]
15
16         // Use shader model 3.0 target, to get nicer looking lighting
17         #pragma target 3.0                                  //编译平台
18
19         sampler2D _MainTex;     //如果你要在CG中使用Properties的定义 需要在这里声明
20
21         struct Input {           //此结构提承载计算中的信息传递
22             float2 uv_MainTex; //纹理坐标 (其实是引用的 Properties的_MainTex 名字之所以不同,是因为纹理坐标必须要以 uv开头  )
23         };
24         //同理 这里是上面声明的定义
25         half _Glossiness;
26         half _Metallic;
27         fixed4 _Color;
28
29         void surf (Input IN, inout SurfaceOutputStandard o) {  //
30              //inout 表示此参数既可以输入 又可以输出
31             //inout SurfaceOutputStandard o  unity surface shader预定义的结构体
32             // Albedo comes from a texture tinted by color
33             fixed4 c = tex2D (_MainTex, IN.uv_MainTex) * _Color; //根据定义的颜色获得一个新的颜色
34             o.Albedo = c.rgb;                                                                  //设置返回的颜色值
35             // Metallic and smoothness come from slider variables
36             o.Metallic = _Metallic;                                                          //返回的贴图
37             o.Smoothness = _Glossiness;                                             //返回的光泽度
38             o.Alpha = c.a;                                                                       //返回的透明信息
39         }
40         ENDCG                    //CG语言标记结束
41
42     }
43     FallBack "Diffuse"
44
45 } 
时间: 2024-10-25 00:58:41

shader开发_5.Surface shader官方例子(注释版本)的相关文章

shader开发_4.Surface shader初探

可编程渲染管线 unity shader==>>Surface shader Surface shader是 unity 对于顶点和片段着色器的一种封装 下面这是一个unity 默认生成的Surface shader Shader "Custom/myshader01" { Properties { _Color ("Color", Color) = (1,1,1,1) _MainTex ("Albedo (RGB)", 2D) =

unity, unlit surface shader (texColor only surface shader)

要实现双面透明无光照只有纹理色的surface shader. 错误的写法:(导致带有曝光) Shader "Custom/doubleFaceTranspTexColor" { Properties { _Color ("Color", Color) = (1,1,1,1) _MainTex ("Albedo (RGB)", 2D) = "white" {} } SubShader { Tags { "Render

UnityShader基础效果-Surface Shader

Ox00 Surface Shader Syntax 常用的三种输出数据格式: //Standard output structure of surface shaders is this: struct SurfaceOutput { fixed3 Albedo; // diffuse color fixed3 Normal; // tangent space normal, if written fixed3 Emission; half Specular; // specular powe

【浅墨Unity3D Shader编程】之六 暗黑城堡篇: 表面着色器(Surface Shader)的写法(一)

本系列文章由@浅墨_毛星云 出品,转载请注明出处. 文章链接:http://hpw123.net/plus/view.php?aid=165 作者:毛星云(浅墨)    微博:http://weibo.com/u/1723155442 邮箱: [email protected] QQ交流群:330595914 更多文章尽在:http://www.hpw123.net 本文主要讲解了Unity中SurfaceShader的具体写法,以及几个常用的CG函数的用法. 在这里先说明一下,表面着色器将分为

Shader编程学习笔记(八)—— Surface Shader 2

Surface Shader 上一小结主要了解了Surface Shader使用了“#pragma surface surf Standard fullforwardshadows”指令的意义,这一小节主要了解“surf”surface函数. void surf (Input IN, inout SurfaceOutputStandard o) { // Albedo comes from a texture tinted by color fixed4 c = tex2D (_MainTex,

Unity Shader——Writing Surface Shaders(3)——Surface Shader Lighting Examples

Surface Shader 光照例子 这里有一些自定义光照模型和Surface Shaders的例子.通常的Surface Shader例子在这里. 由于延迟光照在某些自定义的逐材质光照模型中表现得并不好,在下面大多数例子中,我们让shader只编译到正向渲染中. 漫反射(Diffuse) 让我们以使用内建Lambert光照模型的shader作为开始吧! Shader "Example/Diffuse Texture" { Properties { _MainTex ("T

Unity Shader——Writing Surface Shaders(1)——Surface Shader Examples

这里有Surface Shader的一些例子.下面的这些例子关注使用内建的光照模型:关于如何使用自定义光照模型的例子参见Surface Shader Lighting Examples. 简单 我们将会以一个非常简单的shader作为开始,并在此基础上逐渐完善.下面这个shader会把表面颜色置成“白色”.它使用内建的Lambert(漫反射)光照模型. Shader "Example/Diffuse Simple" { SubShader { Tags { "RenderTy

Shader编程学习笔记(七)—— Surface shader 1

Surface shader 本小结对Unity的Surface Shader做一个大概的了解.主要了解在Surface Shader当中比较重要的几个部分,分别是: SurfaceOutput Input lighing shadow 首先查看一下Unity的官方手册中的Writing Surface Shaders,其中描述道:如果要编写一个shader去和光进行交互是比较复杂的,因为光照会有不同的光照类型,不同的阴影选项和不同的渲染路径(包括foward和deferred renderin

Shader开发之三大着色器

固定功能管线着色器Fixed Function Shaders 固定功能管线着色器的关键代码一般都在Pass的材质设置Material{}和纹理设置SetTexture{}部分. Shader "Custom/VertexList" { Properties { _Color("Main Color",Color) = (0,1,1,0.5) _SpecColor("Spec Color",Color) = (1,1,1,1) _Emission