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学习笔记(三十)-指 ...
随机推荐
- linux 命令杂集
[1]查找日志中某个字符串XXXX tail -f 日志文件名 | grep "XXXX" [2]linux抓包命令 tcpdump -i XXX -A ip xxx.xx ...
- AWS免费云服务套餐申请步骤及常见问题
AWS免费云服务套餐申请步骤及常见问题 AWS免费使用套餐常见问题_AWS免费云服务套餐_-AWS云服务https://amazonaws-china.com/cn/free/faqs/ 什么是 AW ...
- Qt读取TXT文件时,GBK与UTF-8编码判断
读取txt文件时,很多时候无法获取文件的编码格式.如果直接进行使用,则有可能出现乱码.需要在使用前将其转为Unicode(Qt的默认编码格式). 虽然实际的编码格式种类非常多,但平常主要使用的有GBK ...
- How to use CAR FANS C800 Diagnostic Scan Tool to do diagnosis operation
How to use Heavy Duty Diagnostic CAR FANS C800 Diagnostic Scan Tool to do diagnosis operation Here i ...
- Python+OpenCV图像处理(二)——打印图片属性、设置图片存储路径、电脑摄像头的调取和显示
一. 打印图片属性.设置图片存储路径 代码如下: #打印图片的属性.保存图片位置 import cv2 as cv import numpy as np #numpy是一个开源的Python科学计算库 ...
- springboot打war包需要注意事项
1. pom文件 1.1 添加servlet-api依赖: <!-- 添加servlet-api的依赖--> <dependency> <groupId>org.a ...
- 离开(切换)当前页面时改变页面title
document.addEventListener('visibilitychange', function () { if (document.visibilityState == 'hidden' ...
- Censor SCU - 4438
frog is now a editor to censor so-called sensitive words (敏感词). She has a long text (p). Her job is ...
- Linux网络管理(一):网卡驱动与Linux内核
下图简单描述了网卡驱动与Linux内核之间的联系: 关于上图的一些说明: 系统初始化: 1. 协议模块调用 dev_add_pack() 来注册协议处理函数到链表 &ptype_base: 2 ...
- 用switch语句根据消费金额计算折扣
最终输出效果: 代码: package com.mingrisoft; import java.util.Scanner; public class ProductPrice { public sta ...