[进击吧shader]初识shader

来源:互联网 发布:上海php培训机构 编辑:程序博客网 时间:2024/06/08 05:38

Material:你是谁;
shader:我是着色器,也许还是一段代码;
Material:你在我身上干啥;
shader:帮你渲染模型的颜色,贴图等等啊;

那么,如何去创建一个可以看出来的shader呢。

  1. 在视图中创建一个Cube或者其他什么奇怪的东西
  2. 创建一个Material作为shader的载体
  3. 将Material拖拽到创建的物体身上
  4. 再创建一个shader,这里命名为testshader
  5. 在Material的属性面板可以把shader绑定到Material上
  6. 这里写图片描述

这时候,我们可以打开我们创建的testshader文件

Shader "Custom/textshader" {    Properties {        _Color ("Color", Color) = (0,1,1,1)        _MainTex ("Albedo (RGB)", 2D) = "black" {}        _Glossiness ("Smoothness", Range(0,1)) = 0.5        _Metallic ("Metallic", Range(0,1)) = 0.0    }    SubShader {        Tags { "RenderType"="Opaque" }        LOD 200        CGPROGRAM        #pragma surface surf Standard fullforwardshadows        #pragma target 3.0        sampler2D _MainTex;        struct Input {            float2 uv_MainTex;        };        half _Glossiness;        half _Metallic;        fixed4 _Color;        UNITY_INSTANCING_CBUFFER_START(Props)        UNITY_INSTANCING_CBUFFER_END        void surf (Input IN, inout SurfaceOutputStandard o) {            fixed4 c = tex2D (_MainTex, IN.uv_MainTex) * _Color;            o.Albedo = c.rgb;            o.Metallic = _Metallic;            o.Smoothness = _Glossiness;            o.Alpha = c.a;        }        ENDCG    }    FallBack "Diffuse"}

会发现我们根本看不懂,hhhh
但是从整体上,我们可以看到shader的整体框架

shader "Custom/textshader"{             //shader shader的路径    Properties{}                        //shader的一些基本设置,将会显示在以UI的形式显示在面板上    SubShader{}                         //主要的内容,一个shader里可以有很多个subshader,会选择一个合适的来使用,如果都可以,将会从上到下选择    FallBack "Diffuse"                  //如果都不行,则会执行这个,类似default语句的作用}

在Properties模块里

_Color ("Color", Color) = (0,1,1,1)=》变量名 (面板显示的名字,类型)=默认值

总的来说Properties里共有如下属性

Properties {    _MainTex ("Base (RGB)", 2D) = "white" {}//2D贴图纹理    _Color("Color Type", Color) = (1, 1, 1, 1)//颜色    _Float("Float Value", Float) = 0.5//浮点数    _Range("Range Value", Range(0.1, 10)) = 1.0//带范围的浮点数    _Cube("Cube Map", Cube) = ""{}//立方体贴图纹理,可用做天空盒    _Rect("Rect Type", Rect) = ""{}//非2的幂次方的纹理    _Vector("Vector Value", Vector) = (1, 2, 3, 4)//四维向量}

1.对于范围 (Range) 和 浮点 (Float) 属性,默认值只是一个数字。
2.对于颜色 (Color) 和向量 (Vector) 属性来说,默认值为圆括号中的四个数字

3.对纹理(二维 (2D)、矩形 (Rect)、立方体 (Cube))来说,默认值可以是一个空字符串或者是以下内置默认纹理中的一种:”白色”、“黑色”、“灰色”或“凹凸贴图”。

随后在着色器中,通过使用方括号内的属性名称访问属性值:[name],例如[_Color]
当shader里的属性写完后,我们后续就可以来写subshader里的内容了.

结束语:

我在刚学shader看了不少的教程,感觉如果没有一些了解的话,看起来会有些费劲,就结合一些不错的书籍与博客试着写一下shader的入门教程,希望可以给初学者带来帮助

原创粉丝点击