Vertex And Fragment Shader(顶点和片段着色器)

Shader "Unlit/ Vertex­_And_Fragment_Shader "

{

Properties

{

_MainColor("主颜色", color) = (1, 1, 1, 1)

}

SubShader

{

Tags { "RenderType"="Opaque" }

LOD 100

Pass

{

      //固定的一些格式

Tags{"LightModel" = "ForwardBase"}

CGPROGRAM

//声明为顶点着色器  vertex 关键字  vert是顶点着色器渲染时执行的函数

#pragma vertex vert

//声明为片段着色器 fragment 为关键字 frag是片段着色器渲染时执行的函数

#pragma fragment frag

//调用的unity中的指令(标签)

#include "UnityCG.cginc"

#include "Lighting.cginc"

//应用阶段数据  获取应用阶段的数据 模型的顶点颜色 法线 切线之类的数据

struct appdata

{

//float4  变量的属性  vertex是变量名 POSITION是一个语义 作用:把模型空间的顶点位置放入前面的变量中  这个语义可以自动填充

float4 vertex : POSITION;

float3 normal : NORMAL;//获取模型的顶点法线

};

//V  To F 顶点着色器的数据传递给片段着色器

struct v2f

{

//SV_POSITION 也是一个语义  规定变量只能接收投影空间下的顶点位置

float4 vertex : SV_POSITION;

fixed3 col:Color0;                         //得到颜色传到片段着色器

};

float4 _MainColor;   //声明主颜色

v2f vert (appdata v)

{

v2f o;                           //得到v2f数据

o.vertex = mul(UNITY_MATRIX_MVP, v.vertex);    //获得position

//归一化后的光照方向向量

float3 LiaghtDir = normalize(ObjSpaceLightDir(v.vertex));

//对顶点的法线方向向量和光照方向向量进行点积

float Ndotl =saturate(dot(normalize(v.normal), LiaghtDir));

//环境光、unity自带光线、主颜色叠加

fixed3 diffus =  Ndotl*_LightColor0.rgb + UNITY_LIGHTMODEL_AMBIENT.rgb+_MainColor.rgb;

o.col = diffus;   //赋值

return o;

}

fixed4 frag (v2f i) : SV_Target   //SV_Target  缓冲区

{

return fixed4 (i.col, 1);  //渲染到窗口

}

ENDCG

}

}

}

注:POSITION、SV_POSITION等是Unity为了方便对模型数据的传输,进行了特别的含义规定。语义就是一个赋给Shader输入和输出的字符串,表达了一些参数的含义,也就是让Shader知道从哪里读取数据,并把数据输出到哪里。

Vertex And Fragment Shader(顶点和片段着色器)的更多相关文章

  1. Vertex and FragmentShader顶点与片段着色器

    一.顶点与片段着色器简介 Vertex and FragmentShader:最强大的Shader类型,也是本系列的重点,下文中简称V&FShader,属于可编程渲染管线.使用的是CG/HLS ...

  2. 片元着色器(Fragment Shader)被称为像素着色器(Pixel Shader),但

    片元着色器(Fragment Shader)被称为像素着色器(Pixel Shader),但片元着色器是一个更合适的名字, 因为此时的片元并不是一个真正意义上的像素.

  3. stage3D基础二-----顶点和片段着色器(转)

    来源:http://www.adobe.com/cn/devnet/flashplayer/articles/vertex-fragment-shaders.html 本教程将介绍着色器.着色器是 S ...

  4. (译)Minimal Shader(最小的着色器)

    (原文:https://en.wikibooks.org/wiki/Cg_Programming/Unity/Minimal_Shader) This tutorial covers the basi ...

  5. UnityShader之顶点片段着色器Vertex and Fragment Shader【Shader资料】

    顶点片段着色器 V&F Shader:英文全称Vertex and Fragment Shader,最强大的Shader类型,也是我们在使用ShaderLab中的重点部分,属于可编程管线,使用 ...

  6. Unity3D学习笔记(三十五):Shader着色器(2)- 顶点片元着色器

    Alpha测试 AlphaTest Great:大于 AlphaTest Less:小于 AlphaTest Equal:等于 AlphaTest GEqual:大于等于 AlphaTest LEqu ...

  7. Opengl_入门学习分享和记录_02_渲染管线(一)顶点着色器&片段着色器

    写在前面的废话:今天俺又来了哈哈,真的好棒棒! 今天的内容:之前我们大概描述了,我们自己定义的顶点坐标是如何被加载到GPU之中,并且介绍了顶点缓冲对象VBO用于管理这一块内存.今天开始详细分析它的具体 ...

  8. android学习10——对顶点着器和片段着色器的理解

    图形都是点,线,面组成的.顶点着器指定了顶点的位置,大小和颜色. 看一个顶点着色器的代码 attribute vec4 a_Position; attribute float a_PointSize; ...

  9. Unity3d之Shader编程:子着色器、通道与标签的写法 & 纹理混合

    一.子着色器 Unity中的每一个着色器都包含一个subshader的列表,当Unity需要显示一个网格时,它能发现使用的着色器,并提取第一个能运行在当前用户的显示卡上的子着色器. 我们知道,子着色器 ...

随机推荐

  1. Adb无法连接Genymotion

    后来注意到Genymotion启动的时候adb无法正常使用,反复调用adb启动新的server也无法解决 解决起来很简单.打开Genymotion设置界面,进入ADB标签,选中Use custom A ...

  2. Zinterstore 命令

    先来看一下这个命令的定义: Redis Zinterstore 命令计算给定的一个或多个有序集的交集,其中给定 key 的数量必须以 numkeys 参数指定,并将该交集(结果集)储存到 destin ...

  3. 国内物联网平台(5):机智云IoT物联网云服务平台及智能硬件自助开发平台

    国内物联网平台(5)——机智云IoT物联网云服务平台及智能硬件自助开发平台 马智 平台定位 机智云平台是致力于物联网.智能硬件云服务的开放平台.平台提供了从定义产品.设备端开发调试.应用开发.产测.运 ...

  4. Others - 使用 GitHub Pages 搭建个人博客

    写在前面 GitHub 是技术知识分享的地方,如果使用它写其他奇奇怪怪的东西就算了. 正文 新建一个名为 username.github.io 的 repository.其中 username 为你的 ...

  5. 双击获取GridView控件行信息

    有网友要求在GridView控件上,不管是单击(onclick)还是双击(ondblclick),想获取所击行的信息.技术难度是为GridView的行注册单击或是双击事件.看例子吧:在数据库中创建数据 ...

  6. 选择性搜索(Selective Search)

    1 概述 本文牵涉的概念是候选区域(Region Proposal ),用于物体检测算法的输入.无论是机器学习算法还是深度学习算法,候选区域都有用武之地. 2 物体检测和物体识别 物体识别是要分辨出图 ...

  7. ubuntu - 14.04,常用PPA源(第三方提供的deb格式安装文件)!!

    说明: 1,下面所有PPA源的执行命令,均为在shell中执行的命令,需要依次执行! 2,下面所有测试方法,均为在shell中执行的命令!! PPA源: 一,Oracle JDK:Oracle公司提供 ...

  8. 梯度下降&随机梯度下降&批梯度下降

    梯度下降法 ​ 下面的h(x)是要拟合的函数,J(θ)损失函数,theta是参数,要迭代求解的值,theta求解出来了那最终要拟合的函数h(θ)就出来了.其中m是训练集的记录条数,j是参数的个数. 梯 ...

  9. 牛客寒假算法基础集训营1 D 小a与黄金街道

    链接:https://ac.nowcoder.com/acm/contest/317/D 首先被数学题吓到了.gcd(n,x)==1 那么必定有 gcd(n,n-x)==1 证明略. 并且两个人的对答 ...

  10. kuangbin专题十二 POJ3186 Treats for the Cows (区间dp)

    Treats for the Cows Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 7949   Accepted: 42 ...