UnityShader学习——程序纹理

本文介绍了Unity中的程序纹理概念,利用代码生成波点纹理,并讲解了程序材质的使用。程序纹理允许通过算法创建个性化图案,提供丰富的动画效果。在Unity中,程序材质借助Substance Designer生成,其资源可在Unity商店获取。导入Substance文件后,Unity自动生成程序纹理资源,可通过编辑属性实现定制。程序材质的使用方法与普通材质类似。

什么是程序纹理

程序纹理(Procedural Texture)指的是那些由计算机生成的图像,我们通常使用一些特定的算法来创建个性化图案或非常真实的自然元素,例如木头、石子等。使用程序纹理的好处在于我们可以使用各种参数来控制纹理的外观,而这些属性不仅仅是那些颜色属性,甚至可以是完全不同类型的图案属性,这使得我们可以得到更加丰富的动画和视觉效果。

生成程序纹理

我们将会使用代码来生成一个波点纹理:

对于每个属性我们使用了get/set的方法,为了在面板上修改属性时仍可以执行set函数,我们使用了一个开源插件SetProperty(https://github.com/LMNRY/SetProperty)。这使得当我们修改了材质属性时,可以执行_UpdateMaterial函数来使用新的属性重新生成程序纹理。

using UnityEngine;
using System.Collections;
using System.Collections.Generic;

//让该脚本能够在编辑器模式下运行
[ExecuteInEditMode]
public class ProceduralTextureGeneration : MonoBehaviour {
   
   
	//声明一个材质,这个材质将使用该脚本中生成的程序纹理
	public Material material = null;
	//声明该程序纹理使用的各种参数
	#region Material properties
	//纹理的大小,数值通常是2的整数幂
	[SerializeField, SetProperty("textureWidth")]	
	private int m_textureWidth = 512;
	public int textureWidth {
   
   get {
   
   return m_textureWidth;} set {
   
   m_textureWidth = value;_UpdateMaterial();}}
	//纹理的背景颜色
	[SerializeField, SetProperty("backgroundColor")]
	private Color m_backgroundColor = Color.white;
	public Color backgroundColor {
   
   get {
   
   return m_backgroundColor;}set {
   
   m_backgroundColor = value;			_UpdateMaterial();}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值