【Shader】笔记1

1.Unity3d shader分为三种基本类型

1.固定功能着色器(FixedFunction Shader)

2.表面着色器(SurfaceShader)

3.顶点着色器&片段着色器(Vertex Shader & Fragment Shader)


1.固定功能着色器

即固定管线着色.为了方便开发者使用,将底层包装。开发者可以在短时间内上手。

固定功能着色是为了兼容老式显卡的固定渲染管线。

固定渲染管线就是可配置(configurable)的管线,固定管线已经定下来渲染步骤和每个步骤的里面都有哪些参数。

其核心是Material属性块,Lighting的开启和关闭,SepareteSpecular(独立镜面反射)的开启和关闭,SetTexture设置纹理和纹理混合操作

SetTexture[_MainTex]

{

ConstantColor (1,1,1,1) //ConstantColor color 固定色

Combine texture * primary DOUBLE, texture * primary   //Combine 合并

    //matrix [MatrixPropertyName] 矩阵操作

 }

2.表面着色器

Unity包装之后的

可认为是一个光照Shader语法块、一个光照VS/FS的生成器

在SubShader块中写cg,即出现CGPROGRAM和ENDCG块。不出现在Pass里。因为SurfaceShader自己会编译成多个Pass.

编译指令:

#pragma surface surfaceFunction lightMode[optionalparams]

  • surfaceFunction,形如void surf(Input IN,inout SurfaceOutput o),IN为自己定义的输入结构,SurfaceOutput定义为:
    struct SurfaceOutput  
    {  
        half3 Albedo; // 纹理颜色值(r, g, b)  
        half3 Normal; // 法向量(x, y, z)  
        half3 Emission; // 自发光颜色值(r, g, b)  
        half Specular; // 镜面反射度  
        half Gloss; // 光泽度  
        half Alpha; // Alpha不透明度  
    }; 
    

  • lightMode:使用光照模式。eg.Lambert(漫反射),BlinnPhone(镜面反射)。也可以自定义光照模型,定义形如half4 lightingCustomLightModeName<_PrePass>( SurfaceOutput s, half3 lightDir,< half3 viewDir,> half atten)

3.可编程的顶点着色器和片段着色器

特点为:

  • 功能最强大,最自由的形态
  • 在Pass中写cg,即在Pass中出现CGPROGRAM和ENDCG块
  • 编译指令#pragma.官网Cg snimmpts
    最常见
    #pragma vertex funcName
    #pragma fragment funcName

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

延澈左

小小心意

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值