最近由于找工作,面试的时候被问了很多一些shader的问题,虽然根据个人工作经历来说,在项目中能用上shader的时候基本没有(网上有很多shader基本已经满足绝大部分项目的需求了)。
首先说明一下,文章仅仅用于复习以前学习过的shader,不会讲太基础的东西,代码里面会有注释。
如果是0基础的童鞋,建议先看两本书《unity+shader入门精要》(冯乐乐著),《计算机图形学》(第四版)。这两本书看完差不多就能弄懂很多底层的渲染原理了。
代码的运行环境是MAC 10.14,unity2019.3.3正式版
一个最基础的unity shader框架,如下所示:
//shader名称
Shader "DG_77_Shader/Base_Shader"
{
//属性,可有可无
Properties
{
}
//每个shader必须有一个subshader,用于渲染的方法
SubShader
{
//这里会有Subshader的一些标签,非必须
//必有一个pass,渲染逻辑要在这个pass里面实现
Pass
{
//这里会有Pass的标签,非必须,与上面”Subshader“的标签不一样
//cg语言必须在"CGPROGRAM" 和 "ENDCG“之间编写
CGPROGRAM
//渲染逻辑实现
ENDCG
}
}
SubShade