Shader学习笔记(三)
来源:互联网 发布:护士资格考试视频软件 编辑:程序博客网 时间:2024/05/17 09:10
Shader"MyShader/Demo2"{Properties{}SubShader{Pass{CGPROGRAM//顶点函数 这里只是声明了顶点函数的函数名#pragma vertex vert//片源函数 这里只是声明了片源函数的函数名#pragma fragment frag//POSITION (Shader中的语义说明,把顶点坐标传递给v)相当于每一个顶点坐标都会调用这个函数,把顶点坐标转换为剪裁控件坐标float4 vert(float4 v : POSITION) : SV_POSITION{//参数后面跟的语义表示对参数的解释说明,括号后的语义表示对返回值的解释说明//SV_POSITION这个予以用来解释返回函数,意思是返回值是剪裁空间下的顶点坐标//计算矩阵和向量相乘float4 pos = UnityObjectToClipPos(v);//这里我本来写的是mul(UNITY_MATEIX_MVP,v),这是一个矩阵的宏,把一个坐标和一个矩阵相乘,unity将这个函数自动转化成了新的函数return pos;}fixed4 frag():SV_Target {//SV_Target语义:返回值就是处理模型对应到屏幕中每一个颜色return fixed4(0.5,0.5,1,1);}ENDCG}}FallBack "VertexLit"}
顶点函数的基本作用:
模型是由一个个三角面组成的,mesh中存储了模型每个三角面的顶点信息,顶点信息就是模型的顶点坐标,顶点坐标是相对于模型的中心来说的,以自身的中心,(不一定是模型的正中心,是建模的时候的中心),也就是模型空间的坐标系。
将顶点从模型空间转换到剪裁空间。将模型转换到屏幕视野中。(从游戏环境转换到视野相机屏幕上)
片源函数:
处理模型对应到屏幕中每一个像素(返回模型对应屏幕上的每一个像素的颜色值)
UnityCG.cginc中一些常用的函数
//摄像机方向(视角方向)
float3 WorldSpaceViewDir(float4 v) 根据模型空间中的顶点坐标 得到 (世界空间)从这个点到摄像机的观察方向
float3 UnityWorldSpaceViewDir(float4 v) 世界空间中的顶点坐标==》世界空间从这个点到摄像机的观察方向
float3 ObjSpaceViewDir(float4 v) 模型空间中的顶点坐标==》模型空间从这个点到摄像机的观察方向
//光源方向
float3 WorldSpaceLightDir(float4 v) 模型空间中的顶点坐标==》世界空间中从这个点到光源的方向
float3 UnityWorldSpaceLightDir(float4 v) 世界空间中的顶点坐标==》世界空间中从这个点到光源的方向
float3 ObjSpaceLightDir(float4 v) 模型空间中的顶点坐标==》模型空间中从这个点到光源的方向
//方向转换
float3 UnityObjectToWorldNormal(float3 norm) 把法线方向 模型空间==》世界空间
float3 UnityObjectToWorldDir(float3 dir) 把方向 模型空间=》世界空间
float3 UnityWorldToObjectDir(float3 dir) 把方向 世界空间=》模型空间
- Shader学习笔记(三)
- shader学习笔记三
- shader学习笔记三
- Shader学习笔记(三) GPU流水线
- Shader之学习笔记三
- Unity shader学习笔记 (三)
- unity之shader学习笔记(三)
- Shader学习笔记(一)
- Shader学习笔记(二)
- Shader学习笔记(四)
- Shader学习笔记(五)
- Shader编程学习笔记(三)—— 三大主流编程语言 HLSL/GLSL/Cg
- Shader编程学习笔记(三)—— 三大主流编程语言 HLSL/GLSL/Cg
- Shader编程学习笔记(三)—— 三大主流编程语言 HLSL/GLSL/Cg
- Shader编程学习笔记(三)—— 三大主流编程语言 HLSL/GLSL/Cg
- Shader学习笔记(七)Unity Shader Rim示例
- Unity Shader学习笔记(一) shader的基础结构
- Unity Shader 学习笔记(5)第一个简单Shader
- Map operator initialization failed at org.apache.hadoop.hive.ql.exec.tez.TezProcessor
- Zabbix利用Orabbix插件监控Oracle数据库(增强版)--里面有orabbix报错的处理方法
- 第一次安装MySQL注意的问题
- 在 vue-cli 脚手架中引用 jQuery、bootstrap 以及使用 sass、less 编写 css [vue-cli配置入门]
- 57. Insert Interval
- Shader学习笔记(三)
- charset & collation
- linux下安装anaconda,torch,tensorflow
- 【UGUI】UGUI 基础知识(代码设置锚点)
- android学习路线
- 学习笔记-自定义密码输入框和自定义数字密码软键盘
- 决策树学习笔记(一)
- Spring 的四种方式依赖注入
- iOS 高德地图怎么在屏幕内显示所有的Marker?