Unity3D学习笔记(三十四):Shader着色器(1)
FallBack "Diffuse"//Unity自带的LegacyShaders的Diffuse
_Color ("颜色", Color) = (,,,)
Float:数字
_Float ("数字", float) = 0.1//不用加f
Vector:四维向量
_Vector ("向量", Vector) = (,,,)
Range:区间
_Range ("区间", Range(, )) = //注意区间里要设置最大值和最小值
2D:2D纹理
_2D ("2D纹理", 2D) = "white"{}//纹理使用字符串加花括号形式赋初值
Rect:矩形纹理(少用)
_Rect ("矩形纹理", Rect) = "white"{}
_Cube ("立方体纹理", Cube) = "white"{}
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class SetMat : MonoBehaviour {
public Texture tex;
//如果要修改Shader属性面板的值
//首先需要获取使用这个Shader材质
private Material mat;
private MeshRenderer mr;
// Use this for initialization
void Start () {
mr = GetComponent<MeshRenderer>();
//获取MeshRenderer里的材质
mat = mr.material;
//修改颜色,第一个参数是属性面板的变量名,第二个参数是想要设置的值
mat.SetColor("_Color", Color.blue);
//修改数字、区间
mat.SetFloat("_Float", );
mat.SetFloat("_Range", );
//修改向量
mat.SetVector("_Vector", Vector4.one);
//修改纹理
mat.SetTexture("_2D", tex);
//修改纹理的Tiling和Offset
mat.SetTextureScale("_2D", Vector2.zero);//Tiling
mat.SetTextureOffset("_2D", Vector2.one);//Offset
}
}
Shader "Lesson/FixedColor" {
Properties{
_Color("Color", Color) = (,,,)
}
SubShader{
//固定管线着色器要写在Pass里
Pass
{
//关闭灯光
Lighting off
//固定颜色
//Color (1,0,0,1)//使用常量值的颜色
Color[_Color]//使用变量值的颜色
}
//FallBack "Diffuse"
}
Shader "Lesson/FixedDiffuse" {
Properties {
_Diffuse("漫反射颜色", Color) = (,,,)
_Specular("高光颜色", Color) = (,,,)
_Shininess("高光系数", Range(, )) = 0.2
_Emission("自发光颜色", Color) = (,,,)
_Ambient("环境光颜色", Color) = (,,,)
}
SubShader {
Pass
{
//先把灯光打开
Lighting on
//开启独立的镜面反射
SeparateSpecular on
//在这个里去写一些灯光处理控制的命令
Material
{
//灯光产生的漫反射的影响
//漫反射光照命令
Diffuse [_Diffuse]
//高光颜色的命令
Specular [_Specular]
//高光系数 数字0~1
Shininess [_Shininess]
//自发光 相加
Emission [_Emission]
//环境光 相乘,乘以Environment Light的数值,一般情况下设置为(1,1,1,1)
Ambient [_Ambient]
}
}
}
//FallBack "Diffuse"
}
环境光设置

Shader "Lesson/FixedDiffuse" {
Properties {
_Tex("纹理", 2D) = "white"{}
}
SubShader {
Pass
{
SetTexture[_Tex]//可以有多个,效果叠加
{
//计算命令的选项
Combine texture//显示纹理的原始颜色
//如果想与原始颜色进行混合
//定义一个常量色
constantColor[_Color]
//常量色与纹理的原始颜色
Combine texture * constant
//灯光颜色与纹理的原始颜色混合
//double代表双倍的意思
Combine texture * primary double
Combine texture * previous + constant
}
}
}
//FallBack "Diffuse"
}

Shader "Custom/FixedSetTexture" {
Properties {
_MainTex("主纹理贴图", 2D) = ""{}
_SecTex("主纹理贴图", 2D) = ""{}
_Color("颜色", Color) = (,,,)
}
SubShader {
Pass
{
SetTexture[_MainTex]
SetTexture[_SecTex]
{
//语法:Combine src1 lerp (scr2)scr3
//使用scr2的alpha值进行颜色插值,当scr2的alpha值为1的时候,显示scr1的颜色,当scr2的alpha值为0的时候,显示scr3的颜色
//如果scr2的某个像素的alpha值为0.5的时候,那么就是scr1的颜色和scr3的颜色进行1:1的混合
Combine texture lerp (texture)previous
}
SetTexture[_SecTex]
SetTexture[_MainTex]
{
ConstantColor[_Color]
//语法:Combine src1 * scr2 + scr3 用scr1的颜色 * scr2的 alpha 值 + scr3
Combine texture * previous + constant
}
}
}
FallBack "Diffuse"
}
Shader "Lesson/FixedCull" {
Properties {
_MainTex("Albedo (RGB)", 2D) = "white" {}
}
SubShader {
//设置渲染队列的值
Tags{ "Queue" = "BackGround" }
Tags{ "Queue" = "Geometry" }
Tags{ "Queue" = "AlphaTest" }
Tags{ "Queue" = "Transparent" }
Tags{ "Queue" = "Overlay" }
Pass
{
//网格面的裁剪
Cull off
SetTexture[_MainTex]
{
Combine texture
}
}
}
//FallBack "Diffuse"
}
Shader "Lesson/ZTestR" {
Properties {
}
SubShader {
//红色 3000
Tags{ "Queue" = "Transparent" }
Pass
{
//深度测试变为小于比较
ZTest Less
//深度写入关闭
ZWrite off
Color(,,,)
}
}
//FallBack "Diffuse"
}

Unity3D学习笔记(三十四):Shader着色器(1)的更多相关文章
- Unity3D学习笔记(十四):Animation旧动画
animator(新动画系统):骨骼动画,骨骼驱动,格式化编辑,动画机图形化 animation(旧动画系统):物理系统,帧动画 一.如何建立动画文件 Animation Clip 手动添加动 ...
- tensorflow学习笔记(三十四):Saver(保存与加载模型)
Savertensorflow 中的 Saver 对象是用于 参数保存和恢复的.如何使用呢? 这里介绍了一些基本的用法. 官网中给出了这么一个例子: v1 = tf.Variable(..., nam ...
- PHP学习笔记三十四【记录日志】
<?php function my_error2($errno,$errmes) { echo "错误号:".$errno; //默认时区是格林威治相差八个时区 //设置 1 ...
- angular学习笔记(三十)-指令(10)-require和controller
本篇介绍指令的最后两个属性,require和controller 当一个指令需要和父元素指令进行通信的时候,它们就会用到这两个属性,什么意思还是要看栗子: html: <outer‐direct ...
- angular学习笔记(三十)-指令(2)-restrice,replace,template
本篇主要讲解指令中的 restrict属性, replace属性, template属性 这三个属性 一. restrict: 字符串.定义指令在视图中的使用方式,一共有四种使用方式: 1. 元素: ...
- VSTO学习笔记(十四)Excel数据透视表与PowerPivot
原文:VSTO学习笔记(十四)Excel数据透视表与PowerPivot 近期公司内部在做一种通用查询报表,方便人力资源分析.统计数据.由于之前公司系统中有一个类似的查询使用Excel数据透视表完成的 ...
- Python学习笔记(十四)
Python学习笔记(十四): Json and Pickle模块 shelve模块 1. Json and Pickle模块 之前我们学习过用eval内置方法可以将一个字符串转成python对象,不 ...
- angular学习笔记(三十)-指令(7)-compile和link(2)
继续上一篇:angular学习笔记(三十)-指令(7)-compile和link(1) 上一篇讲了compile函数的基本概念,接下来详细讲解compile和link的执行顺序. 看一段三个指令嵌套的 ...
- angular学习笔记(三十)-指令(7)-compile和link(1)
这篇主要讲解指令中的compile,以及它和link的微妙的关系. link函数在之前已经讲过了,而compile函数,它和link函数是不能共存的,如果定义了compile属性又定义link属性,那 ...
- angular学习笔记(三十)-指令(6)-transclude()方法(又称linker()方法)-模拟ng-repeat指令
在angular学习笔记(三十)-指令(4)-transclude文章的末尾提到了,如果在指令中需要反复使用被嵌套的那一坨,需要使用transclude()方法. 在angular学习笔记(三十)-指 ...
随机推荐
- Hibernate,关系映射的多对一单向关联、多对一双向关联、一对一主键关联、一对一外键关联、多对多关系关联
2018-11-10 22:27:02开始写 下图内容ORM.Hibernate介绍.hibername.cfg.xml结构: 下图内容hibernate映射文件结构介绍 下图内容hibernate ...
- Block 循环引用(中)
不会造成循环引用的block 大部分GCD方法 dispatch_async(dispatch_get_main_queue(), ^{ [self doSomething]; }); 因为self并 ...
- 大数据处理框架之Strom:Storm集群环境搭建
搭建环境 Red Hat Enterprise Linux Server release 7.3 (Maipo) zookeeper-3.4.11 jdk1.7.0_80 Pyth ...
- CodeReview实践与总结
CodeReview 是大型软件工程中公认的必不可少的保证工程质量的重要手段之一.但凡正规软件作战军团都是非常重视 CodeReview 的作用和意义的.那么,如何做好 CodeReview 呢?这里 ...
- Runtime单例模式类 -- 控制电脑关机
package demo1; import java.io.IOException; public class RunTimeDemo { public static void main(String ...
- JDBC (29)
1.JDBC:就是一套API,由sun公司定义类或者定义的接口.(全称 java database connectivity:是Java访问数据库的标准规范),Java提供访问数据库规范称为JDBC, ...
- Linux基础命令---杀死进程pkill
pkill pkill可以给指定的进程发送信息,它可以结束某个执行的进程或者目录登录的用户. 此命令的适用范围:RedHat.RHEL.Ubuntu.CentOS.SUSE.openSUSE.Fedo ...
- JS中的函数节流throttle详解和优化
JS中的函数节流throttle详解和优化在前端开发中,有时会为页面绑定resize事件,或者为一个页面元素绑定拖拽事件(mousemove),这种事件有一个特点,在一个正常的操作中,有可能在一个短的 ...
- <转>jmeter(十二)关联之正则表达式提取器
本博客转载自:http://www.cnblogs.com/imyalost/category/846346.html 个人感觉不错,对jmeter讲解非常详细,担心以后找不到了,所以转发出来,留着慢 ...
- MySQL 主表与从表
通过上一篇随笔,笔者了解到,实体完整性是通过主键约束实现的,而参照完整性是通过外键约束实现的,两者都是为了保证数据的完整性和一致性. 主键约束比较好理解,就是主键值不能为空且不重复,已经强调好多次,所 ...