Unity Shader 入门精要(02) -- shader的编码基础
发布日期:2021-06-29 11:13:23 浏览次数:2 分类:技术文章

本文共 1384 字,大约阅读时间需要 4 分钟。

一、一个简单的顶点/片元着色器

Shader "Custom/Chapter 5/Simple Shader" {    Properties {        //属性    }    SubShader{        Pass{            //1.设置渲染状态和标签            //2.开始CG代码片段            CGPROGRAM            //3.该代码片段的编译指令            #pragma vertex vert   //顶点着色器            #pragma fragment frag //片元着色器            //4.cg代码            float4 vert(float4 v:POSITION): SV_POSITION{                return UnityObjectToClipPos (v);//把顶点坐标从模型空间转换到剪裁空间            }            float4 frag() : SV_Target{ //颜色值                return fixed4(1, 1, 0.5f, 1);            }            ENDCG            //5.其他设置            //6.其他需要的pass        }    }    SubShader{        //针对不同显卡有不同的方案    }    //上述SubShader都失败后,用于回调的Unity Shader    FallBack "Diffuse"}

二、Unity Shader的分类

使用的是ShaderLab编写Unity中的Shader1,表面着色器 Surface Shader2,顶点/片元着色器 Vertex/Fragment Shader3,固定函数着色器 Fixed Function Shader

三、Unityshader中属性的类型有哪些

_Color("Color",Color)=(1,1,1,1)_Vector("Vector",Vector)=(1,2,3,4)_Int("Int",Int)= 34234_Float("Float",Float) = 4.5_Range("Range",Range(1,11))=6_2D("Texture",2D) = "red"{}_Cube("Cube",Cube) = "white"{}_3D("Texure",3D) = "black"{}

四、Unity支持的语义

  1. 从应用程序传递到顶点函数的语义有哪些a2v

    POSITION 顶点坐标(模型空间下的)
    NORMAL 法线( 模型空间下)
    TANGENT 切线(模型空间)
    TEXCOORD0 ~n 纹理坐标
    COLOR 顶点颜色

  2. 从顶点函数传递给片元函数的时候可以使用的语义

    SV_POSITION 剪裁空间中的顶点坐标(一般是系统直接使用)
    COLOR0 可以传递一组值 4个
    COLOR1 可以传递一组值 4个
    TEXCOORD0~7 传递纹理坐标

  3. 片元函数传递给系统

    SV_Target 颜色值,显示到屏幕上的颜色

转载地址:https://blog.csdn.net/zwg739424406/article/details/81870865 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:Unity Shader 入门精要(03) -- Unity的基础光照
下一篇:Unity Shader 入门精要(01) -- 渲染流水线

发表评论

最新留言

能坚持,总会有不一样的收获!
[***.219.124.196]2024年04月23日 14时47分38秒