Shader_初识
来源:互联网 发布:mac系统顿号怎么打 编辑:程序博客网 时间:2024/06/14 00:24
Shader_初识<9/10/2017>
在Unity中创建Shader类型文件
给对应的M1,M2,M3选取对应的Shader:
01 first的Shader脚本:
// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)'Shader "Myshader/01 first"{Properties{//在面板上可以改变属性的值,从而改变shader的效果_Color("Color",Color) = (1,1,1,1)// _Color给下面程序用的 ""引号是显示在面板上的 Color是类型 =后面为默认值 Shader里面没有;做结束_Int("Int",Int) = 1_Range("Range",Range(0,10)) = 3_Texture("Texture",2D) = "white"{}_Float("Float",Float) = 3.4}SubShader{pass {CGPROGRAM#pragma vertex vert//定义顶点函数#pragma fragment frag//定义片元函数float4 _Color;//同fixed4 _Colorsampler2D _Texture;float _Int;//fixed->占内存比较小float4 vert(float4 v:POSITION) :SV_POSITION {//把物体坐标系转换为物体的剪裁空间return UnityObjectToClipPos(v);}//语义:用来表示参数的意义//POSITION:模型空间下的坐标//SV_POSITION:表示剪裁空间下的坐标//SV_TARGET0:每个像素点的颜色值float4 frag() :SV_TARGET0 {return float4(_Color.rgb,1);}ENDCG}}}
02 struct的Shader脚本:
// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)'// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)'Shader "Myshader/02 struct"{Properties{}SubShader{pass{CGPROGRAM#pragma vertex vert#pragma fragment fragstruct a2v{ fixed4 pos1:POSITION;//模型空间顶点坐标fixed4 normal:NORMAL;//该语义表示法线};//结构体定义完了要加分号struct v2f{fixed4 sv_position:SV_POSITION;fixed4 color:COLOR;};v2f vert(a2v v){//把顶点的模型空间坐标转换为剪裁空间坐标v2f f;f.color=v.normal;f.sv_position=UnityObjectToClipPos(v.pos1);return f;}fixed4 frag(v2f f):SV_TARGET0{return fixed4(abs(f.color.xyz),1);}ENDCG}}FallBack "Standard"}03 diffuse vertex中的Shader脚本:
// Upgrade NOTE: replaced '_World2Object' with 'unity_WorldToObject'// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)'// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)'Shader "Myshader/03 diffuse vertex"{Properties{}SubShader{Tags {"RenderType"="Opaque"}pass{CGPROGRAM#pragma vertex vert#pragma fragment frag#include "Lighting.cginc"struct a2v{ fixed4 pos1:POSITION;//模型空间顶点坐标fixed3 normal:NORMAL;//该语义表示法线};//结构体定义完了要加分号struct v2f{fixed4 sv_position:SV_POSITION;fixed3 color:COLOR;};v2f vert(a2v v){//把顶点的模型空间坐标转换为剪裁空间坐标v2f f;f.sv_position=UnityObjectToClipPos(v.pos1);//直射光颜色 * max(0,cos夹角(光和法线的夹角))//1.变换发现的坐标系2.光的方向?float3 lightDir=normalize(_WorldSpaceLightPos0.xyz);float3 normalDir=normalize( mul(v.normal,(float3x3)unity_WorldToObject));float3 diffuse=_LightColor0.rgb*max(0,dot(normalDir,-lightDir));f.color=diffuse;return f;}fixed4 frag(v2f f):SV_TARGET0{return fixed4(abs(f.color.xyz),1);}ENDCG}}FallBack "Standard"}实际效果展示
阅读全文
0 0
- Shader_初识
- Shader_介绍001
- Shader_创建、编写Shader002
- Shader_固定管线005
- Shader学习笔记_Vertex Shader_几何变换_波
- 初识
- 初识
- 初识
- js初识,博客初识
- TableLayout初识初识
- 初识Blog
- 初识CAA
- 初识JVM
- 初识SmartClient
- 初识HTC
- 初识JSTL
- JMX初识
- 初识Linux
- C++&Pascal&Python——【USACO 3.4.2】——Electric Fence
- C++信息学一本通题库1020
- 多线程系列——Mutex的两个基本操作lock和unlock的实现
- linux上安装nginx
- Python学习:输入输出重定向
- Shader_初识
- linux命令--ps
- 欢迎各位kinect新手一起讨论
- Linear Regression问题整理
- Xposed模块开发
- spring异常处理机制
- C++一本通题库1021
- Ubuntu16.04搭建LAMP环境详细教程
- 中软培训之JS案例--选项卡(10.9)