UnityShader语法总结

更新时间:2023-07-08 23:52:02 阅读: 评论:0

UnityShader语法总结
1.unity中有两个渲染相关的组件:
mesh Filter⽤来存储⼀个⽹格mesh,⽹格是由三⾓⾯组成的,其中存储了三⾓⾯的⼀些顶点信息。
mesh renderer ⽤来渲染外观,这个必须要有的,可以指定材质(shader+贴图),贴图不是必要的。
2.shader是通过openGL,directX来进⾏编译运⾏的。openGL使⽤GLSL来编写shader,dx使⽤HLSL来编写shader。但是英伟达的CG实现了跨平台,所以unity对CG进⾏了封装,封装成了shaderLab。
3.三种着⾊器:
表⾯着⾊器:Surface Shader(⽐较简单,是封装好的,适⽤于多光源的处理)
顶点/⽚元着⾊器:Vertex/Fragment Shader(基础底层,其他两种都是在它基础上进⾏封装,可以实现更多的功能)
固定函数着⾊器:Fixed Function Shader(⽼⼀代显卡,⼏乎不使⽤)
4.shader的基本框架
Shader "myshader"{
Properties{
_Color("Color",Color)=(1,1,1,1)
_Vector("Vector",Vector)=(1,1,1,1)
_Int("Int",Int)=4
_Float("Float",Float)=4.4
_Range("Range",Range(1,11))=6
_Cube("Cube",Cube)="white"{}
_2D("Texture",2D)="red"{}
_3D("Texture",3D)="black"{}
}
SubShader{
Pass{
CGPROGRAM
//如果要使⽤上⾯的属性,必须再pass⾥⾯再声明⼀次
float4 _Color深圳小学英语教材
popularityfloat3 _t1;
float2 _t;
float _Int;
float _Range;
老师用英语怎么读float _Float;
sampler2D _2D;
samplerCube _Cube;
sampler3D _3D;
#pragma vertex vert
//顶点函数,这⾥只是声明了顶点函数的函数名
美剧英雄第一季
//基本作⽤:从模型空间转换成裁剪空间(从游戏环境转换成视野屏幕上),每个顶点都会调⽤该⽅法。
#pragma fragment frag
//⽚元函数,这⾥只是声明了⽚元函数的函数名
//基本作⽤:返回模型对应屏幕上的每⼀个像素的颜⾊值
//通过语义来进⾏解释float4属于哪个空间,Position指定了v是模型空间的顶点坐标,SV_Position指定了函数的返回值是裁剪空间的。norm是什么意思
float4 vert(float4 v:POSITION):SV_POSITION{
return mul(UNITY_MATRIX_MVP,v);//MATRIX是矩阵的意思,与该矩阵相乘可以把模型空间的顶点转换成裁剪空间
}laredo texas
//SV_Target指定了返回的是屏幕上的每⼀个像素的颜⾊值
//⽤fixed⽐float节省空间,fixed的范围是-2到+2 ,float是32位的,half是16位的
fixed4 frag():SV_Target{
return fixed4(1,1,1,1);//把颜⾊转换成fixed4
}
ENDCG
2013年四级考试时间}
}
Fallback "VertexLit"
}
我们也可以改⼀下,⽤类来把所需要⽤到的参数集结在⼀块
//通过语义来进⾏解释float4属于哪个空间,Position指定了v是模型空间的顶点坐标,SV_Position指定了函数的返回值是裁剪空间的。  //application to vertex
struct a2v{
float4 vertex:POSITION;//告诉UNITY把模型空间下的顶点坐标填充给vertex
float3 normal:NORMAL;//告诉UNITY把模型空间下的法线坐标填充给normal
lombokfloat4 texcoord:TEXCOORD; //告诉UNITY把第⼀套纹理坐标填充给texcoord
};
struct v2f{
float4 position:SV_POSITION;
float3 temp:COLOR0;
};
//vert是对每个顶点都会调⽤,顶点之间的像素会通过插值计算得到
v2f vert(a2v v){
v2f f;
f.position=mul(UNITY_MATRIX_MVP,v.vertex);//MATRIX是矩阵的意思,与该矩阵相乘可以把模型空间的顶点转换成裁剪空间
copyfile
return f;
}
//SV_Target指定了返回的是屏幕上的每⼀个像素的颜⾊值
//frag是对每⼀个像素进⾏调⽤的,会⽐vert好,但是更耗GPU
//⽤fixed⽐float节省空间,fixed的范围是-2到+2 ,float是32位的,half是16位的
fixed4 frag(v2f f):SV_Target{
山雀科
return p,1);//把颜⾊转换成fixed4
}

本文发布于:2023-07-08 23:52:02,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/90/171470.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:空间   模型   顶点
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图