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学习笔记(三十)-指 ...
随机推荐
- jQuery事件--keypress([[data],fn])和trigger(type,[data])
keypress([[data],fn]) 概述 当键盘或按钮被按下时,发生 keypress 事件 keypress 事件与 keydown 事件类似.当按钮被按下时,会发生该事件.它发生在当前获得 ...
- hashcat 中文文档
hashcat 描述 hashcat是世界上最快,最先进的密码恢复工具. 此版本结合了以前基于CPU的hashcat(现在称为hashcat-legacy)和基于GPU的oclHashcat. H ...
- Hive的join表连接查询的一些注意事项
Hive支持的表连接查询的语法: join_table: table_reference JOIN table_factor [join_condition] | table_reference {L ...
- python locust 性能测试:locust安装和一些参数介绍
安装参考 https://www.cnblogs.com/fnng/p/6081798.html <虫师大大的,很详细> ps:python3.7暂不支持locust:python3安装建 ...
- C# 设置按钮快捷键
参考自:http://www.csharpwin.com/csharpspace/3932r8132.shtml 一.C# button快捷键之第一种:Alt + *(按钮快捷键) 在Button按钮 ...
- 怎样从外网访问内网Redis数据库?
本地安装了一个Redis数据库,只能在局域网内访问到,怎样从外网也能访问到本地的Redis数据库呢?本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Redis数据库 默认安装的Redis ...
- Qt Dll总结(二)——创建及使用Qt的Dll(转载)
先讲一下对QT动态链接库的调用方法,主要包括: 1.显式链接DLL,调用DLL的全局函数,采用Qt的QLibrary方法 2.显示链接DLL,调用DLL中类对象.成员函数.(通过对象即可实现类成员函数 ...
- log4j2笔记 #02# 启用异步日志
索引 参考 Making All Loggers Asynchronous 第一步,添加相应的disruptor库 第二步,设置系统属性log4j2.contextSelector 第三步,检验! 参 ...
- Prometheus监控学习笔记之Prometheus监控简介
0x00 Prometheus容器监控解决方案 Prometheus(普罗米修斯)是一个开源系统监控和警报工具,最初是在SoundCloud建立的.它是一个独立的开放源码项目,并且独立于任何公司.不同 ...
- Java Thread.yield详解
这是Java中的一种线程让步方法,让Java中的线程从执行状态变成就绪状态,然后处理器再从就绪队列中挑选线程进行执行(优先级大的,被挑选的概率较大),这种转换也不确定,让或者不让都是取决与处理器,线程 ...