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学习笔记(三十)-指 ...
随机推荐
- 爬取小说 spider
1.代码: # -*- coding:UTF- -*- from bs4 import BeautifulSoup import requests, sys """ 类说 ...
- loadRunner手动关联, web_reg_save_param_regexp()函数正则匹配字符,赋值给变量
loadRunner写脚本实现登录机票网站,手动关联,获取页面源码中特定字符 手动关联,就是通过函数获取某个步骤生成的字符,赋值给一个变量,这个变量可以作为接下来某个步骤的输入, 以便这个脚本能够在存 ...
- Linux服务器---邮件服务openwebmail安装
安装openwebmail openwebmail提供了可视化的邮件管理系统,它运行在Apache环境下. 1.安装必备软件 [root@localhost ~]# yum install –y p ...
- HDU 2175 汉诺塔IX (递推)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2175 1,2,...,n表示n个盘子.数字大盘子就大.n个盘子放在第1根柱子上.大盘不能放在小盘上. ...
- Different between MB SD Connect Compact 5 and MB SD C4 Star Diagnostic Tool
MB SD C4 Star Diagnostic Tool is the professional MB Star Diagnostic Tools for benz cars and trucks. ...
- 大数据学习路线:Hadoop集群同步技术分享
今天给大家带来的技术分享是——Hadoop集群同步. 一.同步方式 选择一个机器,作为时间服务器(这里选择hadoop01),所有的机器与这台集群时间进行定时的同步,比如,每隔十分钟,同步一次时间. ...
- vue 加载更多
<template> <div> <ul> <li v-for="item in articles"> ...
- RTP/RTCP 和 SRTP/SRTCP协议(转)
源: RTP/RTCP 和 SRTP/SRTCP协议
- 2019/3/27 wen 数组排序
- Maven笔记 #01# 入门
索引 Maven是干什么的? 用Maven的好处 Maven与命令行 Maven与IntelliJ IDEA 一.Maven是干什么的? 我相信只要你写过足够多的代码,就... 肯定有思考过写一个脚本 ...