UnityShader之Shader格式篇【Shader资料1】
关于Shader,在Unity里面我们一般叫做ShaderLab,只要你的职业是与渲染搭边,Unity就与ShaderLab有着直接的关联,你都应该试着去学会它,其实我们在新手未有入门的时候,我们总是认为这是个很遥远的东西,只要我们有一次理解了,我们就会发现ShaderLab其实并不难。
每一个Shader,我们从最简单的方式去着手理解,你只需要把它想象成一个无限循环执行的函数即可。可能这样也有部分同学还是很难理解。那我写个代码我们试着来理解它。
public void ShaderLab(object parm[])
{
函数体;
SharderLab(parm[]); //递归调用
}
我们再去调用它 ShaderLab(parm[]);。
我们通过类似这种方式的形式去理解它,我们大家理解了吧,这样把ShaderLab函数看作是一个Shader即可,我们由表及里,一步一步往Shader深入的地方去迈,记住步子迈大了就会扯着蛋,我们通过循序渐进的方式来学习。
对于整体的ShaderLab,调用的内部接口实现,Unity已经帮我们做好了,这里不深入探讨,因为笔者也不了解内部实现,同学们也没有必要现在就去深究这个问题,因为现阶段没学会Shader的情况下纠结这个是没有任何意义的,只会对现在的学习造成干扰。
Shader的格式如下,不要问我为什么内容这么少,因为Shader的内容就是这么少,233333:
Shader "------" //这里省略号表示Shader的路径和名字,例如Custom/shaderEg
{ Properties
{
_Color ("Main Color", Color) = (,.,.,) //传入一个颜色
//这片区域是传入参数,目前一共是分为七种类型,我们后来再详说
} SubShader
{
Pass
{
//渲染通道,一般Shader的代码主要是写在这片区域
}
}
}
UnityShader之Shader格式篇【Shader资料1】的更多相关文章
- UnityShader之Shader分类篇【Shader资料2】
关于ShaderLab,从我个人的理解上来看应该是分为三种类型. 1.Fixed function shader 固定渲染管线Shader,基于用于高级Shader在老显卡无法显示时的Fallback ...
- 鸿蒙内核源码分析(ELF格式篇) | 应用程序入口并不是main | 百篇博客分析OpenHarmony源码 | v51.04
百篇博客系列篇.本篇为: v51.xx 鸿蒙内核源码分析(ELF格式篇) | 应用程序入口并不是main | 51.c.h.o 加载运行相关篇为: v51.xx 鸿蒙内核源码分析(ELF格式篇) | ...
- 「游戏引擎 浅入浅出」4.1 Unity Shader和OpenGL Shader
「游戏引擎 浅入浅出」从零编写游戏引擎教程,是一本开源电子书,PDF/随书代码/资源下载: https://github.com/ThisisGame/cpp-game-engine-book 4.1 ...
- [Unity Shader]ShaderForge制作Shader
什么是ShaderForge ShaderForge的目标是推动统一的视觉质量提升到了新的高度, 给你自由的材质创建在一个视觉和直观的方式——不需要代码! ShaderForge的特性 •实时着色器预 ...
- GLSL写vertex shader和fragment shader
0.一般来说vertex shader处理顶点坐标,然后向后传输,经过光栅化之后,传给fragment shader,其负责颜色.纹理.光照等等. 前者处理之后变成裁剪坐标系(三维),光栅化之后一般认 ...
- Stage3d 由浅到深理解AGAL的管线vertex shader和fragment shader || 简易教程 学习心得 AGAL 非常非常好的入门文章
Everyday Stage3D (一) Everyday Stage3D (二) Triangle Everyday Stage3D (三) AGAL的基本概念 Everyday Stage3D ( ...
- 【swagger】2.swagger提供开发者文档--返回统一格式篇【spring mvc】【spring boot】
接着上一篇来说, 不管正常返回结果还是后台出现异常,应该返回给前台统一的响应格式. 所以这一篇就为了应对解决这个问题. ======================================== ...
- 自己总结的C#编码规范--6.格式篇
格式 格式的统一使用可以使代码清晰.美观.方便阅读.为了不影响编码效率,在此只作如下规定: 长度 一个文件最好不要超过500行(除IDE自动生成的类). 一个文件必须只有一个命名空间,严禁将多个命名空 ...
- 三、Linux学习之命令基本格式篇
一.命令格式 命令 [选项] [参数] 注意: 1.和别命令使用不遵循此格式 2.当有多个选项时,可以写在一起 3.简化选项与完整选项(-a 等价于--all) 4.中括号为可选,意思是可以有可以没有 ...
随机推荐
- AppStore下载慢的真实原因
今天有个朋友说他的app下载很慢,他说下载其他的不会,就他的会很慢很卡.我心想这东西苹果的我也没办法了呀,不过我心里也想我平时下载挺快的呀.于是就开始试试.搜索了几个app下载发现确实是有快有慢,并且 ...
- 【.Net底层剖析】2.stfld指令-给对象的字段赋值
.Net底层剖析目录章节 1.[深入浅出.Net IL]1.一个For循环引发的IL 2.[.Net底层剖析]2.stfld指令-给对象的字段赋值 3.[.Net底层剖析]3.用IL来理解属性 引言: ...
- 2014 网选 广州赛区 hdu 5023 A Corrupt Mayor's Performance Art
#include<iostream> #include<cstring> #include<cstdio> #include<algorithm> #d ...
- MPU9250调试
MPU9250 芯片概述 MPU9250芯片是一个9轴姿态传感芯片,其中包含了3轴加速度传感器.3轴角速度传感器以及三轴磁力计. 其本质上是MPU6050芯片+AK8963. 可以获取传感芯片的加速度 ...
- 【转载】uclibc和glibc的差别
转载自:http://blog.163.com/huangnan0727@126/blog/static/30626184201042022011225/ CC的标准库,就是glibc这个库,里面有G ...
- github神器--Atom编辑器初体验
Atom 1.0正式式版已经出来好几天,自从听说github出了这神器之后,一直想体验一吧,这两天终于体验上. 下载: https://atom.io/ 其实,我的网速还不错,但总是下载到一半就没网速 ...
- nodejs 常用全局包
1.nodemon 更改node程序后程序自动启动 (nodemon app.js) npm install nodemon -g 2.gulp 压缩合并代码等 npm install gulp - ...
- Android学习笔记之使用百度地图实现Poi搜索
PS:装个系统装了一天.心力憔悴.感觉不会再爱了. 学习内容: 1.使用百度Map实现Poi搜索. 2.短串分享 3.在线建议查询 百度地图的研究也算是过半了.能够实现定位,实现相关信息的搜索,实 ...
- QCustomplot使用分享(五) 布局
一.历史对比 关于QCPLayoutElement这个元素的讲解之前,我想先对1.3.2release版本和2.0.0beta版本的该元素做以简单的对比介绍,首先,1.3.2release版本时,鼠标 ...
- javascript之纯数字验证
现在有一个需求如下图: 产品经理说Card Number只能让输入数字(中间的空格是格式自加的,也是用js实现的),有时候我脑海中出现了个声音,啥玩意,加个type=number不就行了,事实发现图样 ...