Unity | Shader基础知识(第六集:语法<如何加入外部颜色资源>)

本文主要是介绍Unity | Shader基础知识(第六集:语法<如何加入外部颜色资源>),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

一、本节介绍

1 上集回顾

2 本节介绍

二、语法结构

1 复习

2 理论知识

3 Shader里声明的写法

4 Properties和SubShader毕竟不是一家人

三、 片元着色器中使用资源

四、代码实现

五、全部代码

六、下集介绍


相关阅读

Unity - Manual: Writing Surface Shaders


一、本节介绍

1 上集回顾

上集制作了一个小彩球。

2 本节介绍

如何加入外部颜色资源Color来控制球体颜色,类似代码里public Color可以在外面看见(如图1所示)并改颜色(如图2所示)。

图1 加入Color
图2 外部改变材质颜色

二、语法结构

1 复习

之前学过的语法结构代码如下:

Shader "Custom/001"    //shader地址
{
SubShader    //干预着色器{pass    //通道{CGPROGRAM    //开始CG语言#pragma vertex vert      //引用顶点着色器#pragma fragment frag    //引用片元着色器#include"UnityCG.cginc"    //引用unity写好的一些内容ENDCG    //结束CG语言}}
}

2 理论知识

我们外部的资源一般在干预着色器之前就要放进来,所以位置是在地址内部,SubShader外部。

学习英文:

Property                财产

Properties             财产(复数)------代码里用这个

代码如下:

Shader "Custom/001"
{
//财产
Properties{}
SubShader{pass{CGPROGRAM#pragma vertex vert#pragma fragment frag#include"UnityCG.cginc"ENDCG}}
}

3 Shader里声明的写法

在C#语法中,我们声明的代码如下:

//公开 //类型是Color        //赋值为(1,1,1,1)
public Color color = new Color(1,1,1,1);//起名是color

shder它本身不是平时的脚本,所以它在起名上面需要两个名字

  • 外部显示的名字(如图3所示),例如我起名为Color
图3 外部显示的名字
  • 内部使用时的名字 ,例如我起名为_Color
  • shader里声明名称的代码
Properties{//内部使用的名称  //声明的数据类型_Color("Color",Color)=(1,1,1,1)//外部使用的名称   //赋值(1,1,1,1)}

4 Properties和SubShader毕竟不是一家人

虽然我们在 Properties里面已经声明了Color,但这仅仅只代表,这个shader脚本里存在了这个信息,并不代表我们可以直接用。

  • 我们用的时候在SubShader中还是要重新声明一下(表明你借过来用)
  • 着色器里面可外部资源的数据类型不一样,Color这个类型它就不认识,它认识的常用的有float3,float4等,Color本质就是一个float4。
  • SubShader接过数据代码
SubShader{pass{CGPROGRAM#pragma vertex vert#pragma fragment frag#include"UnityCG.cginc"//重新声明_Colorfloat4 _Color ;ENDCG}}

三、 片元着色器中使用资源

这时我们可以制作一个球,这个球的颜色根据外面改的颜色而显示它的颜色。改变颜色是片元着色器里直接更改的。

四、代码实现

            float4 frag():SV_TARGET{//直接将接到的数据输出return _Color;}

五、全部代码

都是基于之前教程里讲的之后往下增减的代码。

Shader "Custom/001"
{
Properties{//内部使用的名称  //声明的数据类型_Color("Color",Color)=(1,1,1,1)//外部使用的名称   //赋值(1,1,1,1)}
SubShader{pass{CGPROGRAM#pragma vertex vert#pragma fragment frag#include"UnityCG.cginc"float4 _Color ;appdata_base vert(appdata_base v){v.vertex =UnityObjectToClipPos(v.vertex);return v;}float4 frag():SV_TARGET{return _Color;}ENDCG}}
}

六、下集介绍

本集讲了如何添加外部资源,并通过外部资源来更改现在材质。

下集讲案例,如何加入外部图片资源。

这篇关于Unity | Shader基础知识(第六集:语法<如何加入外部颜色资源>)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/500622

相关文章

Java使用ANTLR4对Lua脚本语法校验详解

《Java使用ANTLR4对Lua脚本语法校验详解》ANTLR是一个强大的解析器生成器,用于读取、处理、执行或翻译结构化文本或二进制文件,下面就跟随小编一起看看Java如何使用ANTLR4对Lua脚本... 目录什么是ANTLR?第一个例子ANTLR4 的工作流程Lua脚本语法校验准备一个Lua Gramm

Java字符串操作技巧之语法、示例与应用场景分析

《Java字符串操作技巧之语法、示例与应用场景分析》在Java算法题和日常开发中,字符串处理是必备的核心技能,本文全面梳理Java中字符串的常用操作语法,结合代码示例、应用场景和避坑指南,可快速掌握字... 目录引言1. 基础操作1.1 创建字符串1.2 获取长度1.3 访问字符2. 字符串处理2.1 子字

Python基础语法中defaultdict的使用小结

《Python基础语法中defaultdict的使用小结》Python的defaultdict是collections模块中提供的一种特殊的字典类型,它与普通的字典(dict)有着相似的功能,本文主要... 目录示例1示例2python的defaultdict是collections模块中提供的一种特殊的字

python+opencv处理颜色之将目标颜色转换实例代码

《python+opencv处理颜色之将目标颜色转换实例代码》OpenCV是一个的跨平台计算机视觉库,可以运行在Linux、Windows和MacOS操作系统上,:本文主要介绍python+ope... 目录下面是代码+ 效果 + 解释转HSV: 关于颜色总是要转HSV的掩膜再标注总结 目标:将红色的部分滤

C++ 中的 if-constexpr语法和作用

《C++中的if-constexpr语法和作用》if-constexpr语法是C++17引入的新语法特性,也被称为常量if表达式或静态if(staticif),:本文主要介绍C++中的if-c... 目录1 if-constexpr 语法1.1 基本语法1.2 扩展说明1.2.1 条件表达式1.2.2 fa

Rust中的Drop特性之解读自动化资源清理的魔法

《Rust中的Drop特性之解读自动化资源清理的魔法》Rust通过Drop特性实现了自动清理机制,确保资源在对象超出作用域时自动释放,避免了手动管理资源时可能出现的内存泄漏或双重释放问题,智能指针如B... 目录自动清理机制:Rust 的析构函数提前释放资源:std::mem::drop android的妙

spring-boot-starter-thymeleaf加载外部html文件方式

《spring-boot-starter-thymeleaf加载外部html文件方式》本文介绍了在SpringMVC中使用Thymeleaf模板引擎加载外部HTML文件的方法,以及在SpringBoo... 目录1.Thymeleaf介绍2.springboot使用thymeleaf2.1.引入spring

解读静态资源访问static-locations和static-path-pattern

《解读静态资源访问static-locations和static-path-pattern》本文主要介绍了SpringBoot中静态资源的配置和访问方式,包括静态资源的默认前缀、默认地址、目录结构、访... 目录静态资源访问static-locations和static-path-pattern静态资源配置

Window Server2016加入AD域的方法步骤

《WindowServer2016加入AD域的方法步骤》:本文主要介绍WindowServer2016加入AD域的方法步骤,包括配置DNS、检测ping通、更改计算机域、输入账号密码、重启服务... 目录一、 准备条件二、配置ServerB加入ServerA的AD域(test.ly)三、查看加入AD域后的变

python使用watchdog实现文件资源监控

《python使用watchdog实现文件资源监控》watchdog支持跨平台文件资源监控,可以检测指定文件夹下文件及文件夹变动,下面我们来看看Python如何使用watchdog实现文件资源监控吧... python文件监控库watchdogs简介随着Python在各种应用领域中的广泛使用,其生态环境也