学习资料:http://www.sikiedu.com/course/37/task/433/show


本节学习目标:

  • 学习Shader中结构体struct的使用。
  • 学习在片元函数(vertex)和顶点函数(fragment)之间传递数据。
  • 学习从应用程序传递到顶点函数(a2v)、从顶点函数传递到片元函数(v2f)、从片元函数传递回系统(f2a)时,各个阶段中可以使用的语义。
Shader "Custom/02" {
SubShader{
Pass {
CGPROGRAM #pragma vertex vert
#pragma fragment frag struct a2v // 命名表示从应用程序传递到顶点函数,application to vertex
{
float4 vertex : POSITION; // 告诉Unity把模型空间下的顶点坐标填充给vertex属性
float3 normal : NORMAL; // 告诉Unity把模型空间下的法线方向填充给normal属性
float4 texcoord : TEXCOORD0; // 告诉Unity把第一套纹理坐标填充给texcoord属性
}; struct v2f // 命名表示从顶点函数传递到片元函数,vertex to fragment
{
float4 position : SV_POSITION;
float3 temp : COLOR0; // 属性必须指定语义。该语意可以由用户自定义,一般用于存储颜色
}; // 计算顶点坐标从模型坐标系转换到裁剪面坐标系
v2f vert(a2v v)
{
v2f f;
f.position = mul(UNITY_MATRIX_MVP, v.vertex);
f.temp = v.normal;
return f; // 使用结构体struct就可以一次返回多个数据
} // 计算每个像素点的颜色值
fixed4 frag(v2f f) : SV_Target
{
return fixed4(f.temp, ); // f.temp是float3已经包含了三个数值
} ENDCG
} }
FallBack "Diffuse"
}

最终显示的颜色值是每个像素点的法线方向的颜色值。参考右上角的世界坐标。


从应用程序传递到顶点函数(a2v)时,可以使用的语义:

  • POSITION 顶点坐标(模型空间)
  • NORMAL 法线(模型空间)
  • TANGENT 切线(模型空间)
  • TEXCOORD(0~n) 纹理坐标。x、y从0到1
  • COLOR 顶点颜色

从顶点函数传递给片元函数(v2f)时,可以使用的语义:

  • SV_POSITION 顶点坐标(剪裁空间),一般是系统直接使用
  • COLOR0 可以传递一组值(4个)
  • COLOR1 可以传递一组值(4个)
  • TEXCOORD(0~7) 传递纹理坐标

从片元函数传递回系统(f2a)时,可以使用的语义:

  • SV_TARGET 颜色值,显示到屏幕上的颜色

【Unity Shader】二、顶点函数(vertex)和片元函数(fragment)传递数据,及各阶段可使用的语义(semantic)的更多相关文章

  1. [Unity Shader] 逐顶点光照和逐片元漫反射光照

    书中的6.4节讲的是漫反射的逐顶点光照和逐片元光照. 前一种算法是根据漫反射公式计算顶点颜色(顶点着色器),对颜色插值(光栅化过程)返回每个像素的颜色值(片元着色器). 第二种算法是获得顶点的法线(顶 ...

  2. 【Unity Shader】一、顶点函数(vertex)和片元函数(fragment)

    学习资料:http://www.sikiedu.com/course/37/task/430/show 学习Shader中顶点函数(vertex)和片元函数(fragment)的基本用法. Shade ...

  3. 【Unity Shader】(三) ------ 光照模型原理及漫反射和高光反射的实现

    [Unity Shader](三) ---------------- 光照模型原理及漫反射和高光反射的实现 [Unity Shader](四) ------ 纹理之法线纹理.单张纹理及遮罩纹理的实现 ...

  4. Unity Shader入门精要学习笔记 - 第3章 Unity Shader 基础

    来源作者:candycat   http://blog.csdn.net/candycat1992/article/ 概述 总体来说,在Unity中我们需要配合使用材质和Unity Shader才能达 ...

  5. unity shader入门(二)语义,结构体,逐顶点光照

    下为一个逐顶点漫反射光照shader Shader "study/Chapter6/vertexShader"{ Properties{_Diffuse("Diffuse ...

  6. Unity Shader 知识点总结(二)

    紧接着上一篇文章的shader入门知识的总结,本文主要总结shader中的纹理贴图.透明度混合.顶点动画.后期特效处理等操作.如果有什么地方有错,请指出更正,谢谢.本文的代码主要来自开源书:unity ...

  7. 【Unity Shader】---常用帮助函数、结构体和全局变量

    [Unity Shader]---常用帮助函数.结构体和全局变量 一.内置包含文件 Unity中有类似于C++的包含文件.cginc,在编写Shader时我们可以使用#include指令把这些文件包含 ...

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

    Vertex And Fragment Shader(顶点和片段着色器) Shader "Unlit/ Vertex­_And_Fragment_Shader " { Proper ...

  9. Unity Shader (四)顶点程序示例

    1.在顶点函数中实现凸起效果 Shader "Custom/Example" { properties { _R(,))= //圆的半径,也是凸起的范围 _OX(,))= //x轴 ...

随机推荐

  1. Android上面通过URL来启动本地应用

    <application android:allowBackup="true" android:icon="@drawable/ic_launcher" ...

  2. Win 7 IE11不能下载文件,右键另存为也不行

    在IE11中不能下载文件,右键另存为也无效. 发现 在IE11中点击“INTERNET选项”后,IE临时文件夹的地址没有显示,大小为0,修改只能让设置在8-8MB,注销再登录后,一切设置无效. 问题就 ...

  3. ios标准开发者账号 ios企业开发者账号的区别总结

    ios标准开发者账号 ios企业开发者账号的区别总结   ios标准开发者项目 1.ios标准开发者项目账号可以发布到app store 2.ios标准开发者项目分为两种:①个人开发者②公司/机构开发 ...

  4. php file_get_contents读取大容量文件方法

      当我们遇到文本文件体积很大时,比如超过几十M甚至几百M几G的大文件,用记事本或者其它编辑器打开往往不能成功,因为他们都需要把文件内容全部放到内存里面,这时就会发生内存溢出而打开错误,遇到这种情况我 ...

  5. linux中WDCP的日志彻底删除技巧

    apache或nginx都有开关默认日志,一个是正常访问日志,一个是错误的日志,目录在 /www/wdlinux/nginx-1.0.15/logs /www/wdlinux/httpd-2.2.22 ...

  6. python标准库介绍——30 code 模块详解

    ==code 模块== ``code`` 模块提供了一些用于模拟标准交互解释器行为的函数. ``compile_command`` 与内建 ``compile`` 函数行为相似, 但它会通过测试来保证 ...

  7. Vue 动态组件、动画、插件

    1 动态组件 ①简单来说: 就是几个组件放在一个挂载点下,然后根据父组件的某个变量来决定显示哪个,或者都不显示. ②动态切换: 在挂载点使用component标签,然后使用v-bind:is=”组件名 ...

  8. unity, ContentSizeFitter立即生效

    ugui Text上添加了ContentSizeFitter组件后,如果在代码里对Text.text重新赋值,文本框并不会马上改变大小,而是会延迟到下一帧. 如果想立刻生效,需要调用 Text.Get ...

  9. MySQL 5.6学习笔记(数据库基本操作,查看和修改表的存储引擎)

    1. 数据库基本操作 1.1  查看数据库 查看数据库列表: mysql> show databases; +--------------------+ | Database | +------ ...

  10. jQuery学习笔记(DOM操作)

    DOM操作的分类 一般来说,DOM操作分为3个方面,即DOM Core.HTML-DOM和CSS-DOM. 1. DOM Core DOM Core并不专属于JavaScript,任何一种支持DOM的 ...