我会把这段时间学的shader知识,一篇篇的写出来,并不高深,我是初学者,而且还在学习中,就是做个总结以及备忘。如果能够对你有帮助,那再好不过,如果发现我写的内容有不正确的地方,也请多多指教。
运行环境:
Win10 x64
Unity 5.5.4

Shader "Custom/SimpleShader"  //Shader最外层,""中定义Shader名
{SubShader{    //必要组成部分pass{           //通道CGPROGRAM      //CG程序开头#pragma vertex vert    //定义顶点级程序#pragma fragment frag   //定义片断级程序#include "unitycg.cginc"   //引用unitycg文件,unity自定的结构体和函数等struct v2f{                           //自定义结构体,作为vert函数的返回值float4 pos:POSITION;  //位置,最基本的属性,屏幕上正确显示此物体的形状和位置};v2f vert(appdata_base v)       //顶点级程序,appdata_base定义在unitycg.cginc中{v2f o;o.pos=mul(UNITY_MATRIX_MVP, v.vertex);    //将原始的物体坐标系坐标转化至投影坐标系坐标return o;}fixed4 frag(v2f IN):COLOR{fixed4 col=fixed4(1,1,1,1);  //定义颜色为纯白rgbareturn col;}ENDCG      //CG程序结尾}}
}


如上图,使用这个最简Shader材质的Cube只是显示纯白色,和光照什么的没有任何关系,也没有阴影。
在顶点程序vert中,转换物体坐标至投影坐标系,使物体在显示屏上能正确显示(形状及位置)
将定义好的v2f输出,在片断程序frag中输入来自顶点程序的v2f,定义一个颜色,并输出。
最终Cube具有正确的形状和位置,只显示纯白色。

在顶点程序vert中,mul函数是cg函数,作用是矩阵变换。如本例
mul(UNITY_MATRIX_MVP, v.vertex);
将物体原始的自身物体坐标系坐标,四维向量v.vertex用UNITY_MATRIX_MVP转化至投影(屏幕)坐标系。
UNITY_MATRIX_MVP是内建矩阵,直接使用。
appdata_base定义在unitycg.cginc中,通过#include "unitycg.cginc"已经将文件引用。

struct:结构体
float4:float类型的四维向量 (x,y,z,w)或(r,g,b,a)
fixed4:fixed类型的四维向量 (x,y,z,w)或(r,g,b,a),精度不高,但用于颜色足够了
fixed4 frag(v2f IN):COLOR,其中:COLOR是语义定义,说明这个程序输出的是颜色,不定义会报错。

转载于:https://blog.51cto.com/shuxiayeshou/2065336

ShaderLab学习小结(一)最简化的顶点片断Shader相关推荐

  1. ShaderLab学习小结(十九)RenderToCubemap创建能反射周围环境的效果

    继续用"ShaderLab学习小结(十八)cubemap"中所做的shader 想要让它能对周围的环境进行反射 思路就是要让它的cubemap里的内容是周围环境的映射 shader ...

  2. ShaderLab学习小结(四)简单产生阴影

    运行环境: Win10 x64 Unity 5.5.4 在之前"ShaderLab学习小结(三)漫反射+高光+点光源"中的场景加入一个plane,如下图: 被平行光和点光源照射的球 ...

  3. shaderlab学习一

    shaderlab学习一 转载:http://wuchengwu5.blog.163.com/blog/static/852237120111115104310682/ Unity中的材质着色器被称为 ...

  4. 【转载】Hyperledger学习小结

    Hyperledger学习小结 自学Hyperledger Composer也有段时间了,是时候对所学的知识总结一下了.因为没有实际项目参与的话,差不多也就到此为止了.后续可能会去了解一下以太坊的技术 ...

  5. ShaderLab学习总结

    转载 Unity ShaderLab学习总结 Why Bothers? 为什么已经有ShaderForge这种可视化Shader编辑器.为什么Asset Store已经有那么多炫酷的Shader组件可 ...

  6. SAP快速学习小结1

    SAP快速学习小结1 一.SAP基础 SAP(System,Applications and Products in Data Processing,即数据处理的系统.应用和产品) SAP R/3 系 ...

  7. JavaSE学习小结二

    JavaSE学习小结二 记录学习----------JavaSE模块三&四 其中大部分是一些工具类,会将常用方法及其功能描述整理成表格方便日后查阅 文章目录 JavaSE学习小结二 一.Obj ...

  8. Unity ShaderLab学习总结

    http://www.jianshu.com/p/7b9498e58659 Unity ShaderLab学习总结 作者 DonaldW 关注 2014.07.20 17:17* 字数 4891 阅读 ...

  9. 无限风光 : 近来地形算法学习小结【转】

    无限风光 : 近来地形算法学习小结 原文链接   目录 -写在前面 -本文话题整体观 -概念(Concepts): 入门须知      -高度图(HeightMap)      -分形(Fractal ...

最新文章

  1. 朋友来网易面试,挂了~
  2. python判断图片模糊
  3. Stroke filter: 一种用于OCR预处理的文字滤波器
  4. 【采用】干货请收好:终于有人把用户画像的流程、方法讲明白了
  5. 涨知识!船东提单和货代提单的区别!
  6. 如何打造一份优雅的简历?
  7. 除外存外 微型计算机的存储系统一般指,除外存之外,微型计算机的存储系统一般指()...
  8. priority_queue实现大顶堆和小顶堆
  9. java获取类的信息
  10. locktty锁终端的方法
  11. C++ getline在VC6.0的一个bug(处理方法)(转)
  12. H.264的Slice及Slice类型
  13. 掘金网无极ip代理软件IOS版如何下载安装?
  14. linux怎么安装pcie串口卡驱动,pci串口卡驱动是什么接口 pci串口卡驱动安装方法...
  15. 计算机知识竞赛活动工作总结,环保知识竞赛活动总结范文
  16. 手把手教你进行腾讯云域名注册
  17. 与Lucene 4.10配合的中文分词比较(转)
  18. 生活已经离不开网络,家用路由器与工业路由器有哪些区别,必备知识看完就明白
  19. GO 语言离线安装包
  20. 时空大数据可视化专栏

热门文章

  1. POJ 1671 第二类斯特林数
  2. ZeroC Ice启用SSL通讯的配置
  3. Google 历年笔试面试30题
  4. python常见模块命令(os/sys/platform)
  5. JS实例操作QQ空间自动点赞方法
  6. C算法--入门 2.3
  7. [route]Add up route for deb rpm and windows / 为RPM系DEB系和Windows添加路由
  8. 【BZOJ3028】食物(生成函数)
  9. 哪种代理适合用于Web数据采集
  10. MySQL 5.1 安装过程中报apply security setting错误的解决办法 收藏