Shader(顶点片段着色器)
来源:互联网 发布:二维数组元素的排序 c 编辑:程序博客网 时间:2024/05/16 00:48
//第一种Shader "VRShader/DiffuseShader"{Properties{_Color("MainColor", Color) = (1, 1, 1, 1)}SubShader{Pass{CGPROGRAM#pragma vertex vert#pragma fragment frag#include "UnityCG.cginc"//顶点着色器输入结构struct appdata{float4 vertex : POSITION;//顶点位置float3 normal : NORMAL;//法线向量坐标};//顶点着色器输出结构struct v2f{float4 position : SV_POSITION;//像素位置float3 normal : NORMAL;//法线向量坐标};//变量声明float4 _LightColor0;float4 _Color;v2f vert(appdata input){v2f output;//输出的顶点位置为模型视图投影矩阵乘以顶点位置,也就是将三维空间中的坐标投影到了二维窗口output.position = mul(UNITY_MATRIX_MVP, input.vertex);//获取顶点在世界空间中的法线向量坐标output.normal = mul(float4(input.normal, 0.0), unity_WorldToObject).xyz;return output;}fixed4 frag(v2f input) : COLOR{//获取法线的方向float3 normalDirection = normalize(input.normal);//获取入射光线的值与方向float3 lightDirection = normalize(_WorldSpaceLightPos0.xyz);//计算出漫反射颜色值 Diffuse=LightColor * MainColor * max(0,dot(N,L))float3 diffuse = _LightColor0.rgb * _Color.rgb * max(0.0, -dot(normalDirection, lightDirection));//合并漫反射颜色值与环境光颜色值float4 DiffuseAmbient = float4(diffuse, 1.0) + UNITY_LIGHTMODEL_AMBIENT;//将漫反射-环境光颜色值乘上纹理颜色,并返回return DiffuseAmbient;}ENDCG}}}//第二种Shader "VRShader/Rainbow_AdjustRGBValue"{properties{_ColorRValue("R",Range(0,1))=0.2_ColorGValue("G",Range(0,1))=0.2_ColorBValue("B",Range(0,1))=0.2}SubShader{Pass{CGPROGRAM#pragma vertex vert#pragma fragment frag//变量声明float _ColorRValue;float _ColorGValue;float _ColorBValue;//顶点输出结构体struct vertexOutput{float4 position:SV_POSITION;float4 color:TEXCOORD0;};//顶点函数vertexOutput vert(float4 vertexPos:POSITION){vertexOutput v;v.position=mul(UNITY_MATRIX_MVP,vertexPos);v.color=vertexPos+float4(_ColorRValue,_ColorGValue,_ColorBValue,0);return v;}//片段函数float4 frag(vertexOutput output):COLOR{return output.color;}ENDCG}}}//第三种Shader "VRShader/Rainbow_AdjustValue"{properties{_ColorValue("ColorValue",Range(0,1))=0.2}SubShader{Pass{CGPROGRAM#pragma vertex vert#pragma fragment frag//变量声明float _ColorValue;//顶点输出结构体struct vertexOutput{float4 position:SV_POSITION;float4 color:TEXCOORD0;};//顶点函数vertexOutput vert(float4 vertexPos:POSITION){vertexOutput v;v.position=mul(UNITY_MATRIX_MVP,vertexPos);v.color=vertexPos+float4(_ColorValue,_ColorValue,_ColorValue,0);return v;}//片段函数float4 frag(vertexOutput output):COLOR{return output.color;}ENDCG}}}//第四种Shader "VRShader/Vertex&Fragment&Rainbow"{ Properties { } SubShader { Pass { CGPROGRAM#pragma vertex vert//顶点函数声明#pragma fragment frag//片段函数声明//顶点函数输出结构体struct vertexOutput{float4 position:SV_POSITION;//像素坐标位置float4 color:TEXCOORD0;//0级纹理坐标};//顶点函数vertexOutput vert(float4 vertexPos:POSITION){//声明结构体vertexOutput v;//顶点坐标变换v.position=mul(UNITY_MATRIX_MVP,vertexPos);//设置顶点颜色v.color=vertexPos+float4(0.2,0.2,0.2,1);//返回结果return v;}//片段函数float4 frag(vertexOutput output):COLOR{//返回颜色值return output.color;}ENDCG } }}//第五种Shader "VRShader/Vertex&Fragment&SingleColor"{Properties{_Color("Color",color)=(1,1,1,1)}SubShader{//Pass通道Pass{CGPROGRAM#pragma vertex vert//顶点函数声明#pragma fragment frag//片段函数声明float4 _Color;//顶点函数//vertexPos顶点坐标位置(语义绑定POSITION)//返回值float4像素坐标位置(语义绑定SV_POSITION)float4 vert(float4 vertexPos:POSITION):SV_POSITION{return mul(UNITY_MATRIX_MVP,vertexPos);}//返回值(语义绑定COLOR颜色)float4 frag():COLOR{//Hard Coding 硬编码//return float4(1,0,0,1);return _Color;}ENDCG}}}
0 0
- Shader(顶点片段着色器)
- unity shader 可编程管线(二) 顶点和片段着色器(Vertex Shader and Fragmet Shader)
- 顶点、片段着色器
- 顶点,片段着色器
- Shader山下(十四)顶点片段着色器处理光照
- 【Unity Shader学习笔记】(二)最基本的顶点片段着色器
- shader入门 《顶点着色器 与 片段(像素)着色器》概念
- shader 入门 《顶点着色器 的输出 和 片段着色器的 输入》
- 顶点和片段着色器
- 顶点和片段着色器
- Unity Shader 顶点和片段着色器(Vertex and Fragment Shader)
- 顶点着色器(vertex shader)
- Unity Shader:细分着色器(Tessellation Shader)在顶点与片段着色器中的写法以及各参数变量解释。
- 增加顶点和片段着色器
- [UnityShader2]顶点片段着色器实例(一)
- [UnityShader2]顶点片段着色器实例(二)
- [UnityShader2]顶点片段着色器实例(三)
- [UnityShader2]顶点片段着色器实例(四)
- IO - 同步,异步,阻塞,非阻塞 (亡羊补牢篇)
- rpm 程序安装与卸载
- Ajax学习笔记
- js call()方法
- ARM:裸板shell编程完善(匹配命令、修复bug)、G-Sensor重力传感器驱动基础
- Shader(顶点片段着色器)
- MVC演化、理解
- EventBus的基本使用
- 小鑫の日常系列故事(十)——排名次 (sdut oj)
- 快速上手Vue(适合懂基础html、css和js的人)
- 面试-webservice
- 自己刚学时候的链表整理一下,方便以后翻阅
- iOS 轮播视图的实现方式 和 RunLoopMode 的注意
- Android布局