unity多个贴图shader

2023-11-18

在一个Material上放多个贴图的测试,比如一个plane上放四个贴图

Shader "__aaa"
{
    Properties
    {
        _MainTex ("Texture", 2D) = "white" {}
        _MainTex2 ("Texture", 2D) = "white" {}
        _MainTex3 ("Texture", 2D) = "white" {}
        _MainTex4 ("Texture", 2D) = "white" {}
    }
    SubShader
    {
        Tags { "RenderType"="Opaque" }
        LOD 100

        CGINCLUDE
        #include "UnityCG.cginc"
        
        struct appdata
        {
            float4 vertex : POSITION;
            float2 uv : TEXCOORD;
        };

        struct v2f
        {
            float4 vertex : SV_POSITION;
            float2 uv : TEXCOORD;
        };
        
        ENDCG
        
        Pass
        {
            CGPROGRAM
            #pragma vertex vert
            #pragma fragment frag
            
            sampler2D _MainTex;
            float4 _MainTex_ST;

            v2f vert (appdata v)
            {
                v2f o;
                o.vertex = UnityObjectToClipPos(v.vertex);
                o.uv = TRANSFORM_TEX(v.uv, _MainTex);
                return o;
            }
            
            fixed4 frag (v2f i) : SV_Target
            {
                clip(i.uv-1);
                fixed4 col = tex2D(_MainTex, i.uv);
                return col;
            }
            ENDCG
        }
        Pass
        {
            CGPROGRAM
            #pragma vertex vert
            #pragma fragment frag
        

            sampler2D _MainTex2;
            float4 _MainTex2_ST;

            v2f vert (appdata v)
            {
                v2f o;
                o.vertex = UnityObjectToClipPos(v.vertex);
                o.uv = TRANSFORM_TEX(v.uv, _MainTex2);
                return o;
            }
            
            fixed4 frag (v2f i) : SV_Target
            {
                clip(1-i.uv);
                fixed4 col = tex2D(_MainTex2, i.uv);
                return col;
            }
            ENDCG
        }
        Pass
        {
            CGPROGRAM
            #pragma vertex vert
            #pragma fragment frag
            

            sampler2D _MainTex3;
            float4 _MainTex3_ST;

            v2f vert (appdata v)
            {
                v2f o;
                o.vertex = UnityObjectToClipPos(v.vertex);
                o.uv = TRANSFORM_TEX(v.uv, _MainTex3);
                return o;
            }
            
            fixed4 frag (v2f i) : SV_Target
            {
                clip(i.uv.x-1);
                clip(1-i.uv.y);
                fixed4 col = tex2D(_MainTex3, i.uv);
                return col;
            }
            ENDCG
        }
        Pass
        {
            CGPROGRAM
            #pragma vertex vert
            #pragma fragment frag
            

            sampler2D _MainTex4;
            float4 _MainTex4_ST;

            v2f vert (appdata v)
            {
                v2f o;
                o.vertex = UnityObjectToClipPos(v.vertex);
                o.uv = TRANSFORM_TEX(v.uv, _MainTex4);
                return o;
            }
            
            fixed4 frag (v2f i) : SV_Target
            {
                clip(i.uv.y-1);
                clip(1-i.uv.x);
                fixed4 col = tex2D(_MainTex4, i.uv);
                return col;
            }
            ENDCG
        }
    }
}

贴图tiling都设为2,2

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

unity多个贴图shader 的相关文章

随机推荐

  • Mac安装python3

    可以在命令行中输入 brew install python3 但是出现了error 如下所示 tar Error opening archive Failed to open Users my Library Caches Homebrew
  • springBoot自动装载原理

    springBoot自动装载原理 启动类的核心组合注解 SpringBootApplication 点进去看看 组成 SpringBootApplication注解的三个核心注解 SpringBootConfiguration 继承自 Co
  • 【MySQL】数据库高级查询:修改表、DML语句、DQL语句

    修改表 1 修改表名 ALTER TABLE 旧表名 RENAME TO 新表名 TO为可选参数 使用与否不影响结果 2 添加字段 ALTER TABLE 表名 ADD 字段名 数据类型 属性 3 修改字段 ALTER TABLE 表名 C
  • Spring Bean作用域简介说明

    转自 Spring Bean作用域简介说明 Bean作用域简介 Bean作用域指一个Bean是否为单例模式 还是每次访问新实例 或一个Session一个新实例等方式 那么Bean作用域有哪几种呢 下文将一一道来 作用域 描述 singlet
  • springboot(三)———解决 8/24/2022 6:00类型转换为2022-08-24 06:00:00.0(MM/dd/yyyy H:mm与yyyy-MM-dd HH:mm:ss转换)

    输入 输出 代码 String datastring 8 24 22 6 00 String arrDate datastring split 3 StringBuffer stringBuffer new StringBuffer str
  • 停止和删除Hasplms服务(一)

    使用圣天诺HASP加密的软件都会启动一个叫做Hasplms或Sentinel LDK License Manager的服务项 这个服务是软件运行所必须的 但是在软件卸载后往往这个服务还在运行 重启电脑后也还继续运行 这就非常不厚道了 针对这
  • Gradle介绍1-入门和IDEA整合(Gradle Wrapper)

    1 Gradle 入门 1 1 Gradle 简介 Gradle 是一款Google 推出的基于 JVM 通用灵活的项目构建工具 支持 Maven JCenter 多种第三方仓库 支持传递性依赖管理 废弃了繁杂的xml 文件 转而使用简洁的
  • QGLWidget类的初始化顺序

    这里 我们用一个简单的opengl程序来了解一下QGLWidget类的结构 程序绘制了一个白色的正方形 1 QGLWidget类的定义 cpp view plain copy class Widget public QGLWidget Q
  • 在Linux(Redhat/CentOS)下安装MySQL之yum(rpm)在线安装方式

    在CentOS6之前 yum源默认存在MySQL yum install mysql server mysql client 在CentOS6之后 yum没有MySQL源 意味着我们要自己下载源 下载源 yum install url 安装
  • JMeter压力测试教程(超详细&小白版)

    目录 文章目录 jdk jmeter下载安装 jmeter应用启动 jmeter使用教程 jmeter测试结果分析 一 jdk jmeter下载安装 1 提前下载jdk和jmeter并配置环境 备注 jdk和jmeter版本需对应 否则后期
  • win10系统mysql开发常见问题集锦

    目录 一 mysql56 系统找不到指定文件 二 mysqldump Error Binlogging on server not active 无法导出数据 三 mysql备份导出的数据为空 四 mysql事件不执行 五 修改mysql密
  • python读取文件存到excel中

    用xlwt模块执行代码报下面的错 ValueError column index 256 not an int in range 256 xlwt 模块看源码说最大列只支持255列 所以超过这个值就报错了 改用xlsxwriter模块 im
  • pygame实现飞机大战-第二版代码分析

    目录 一 原代码 第一部分 精灵定义部分 第二部分 游戏运行部分 二 代码分析 一 代码整体结构 1 定义了main 2 创建游戏对象 3 启动游戏 二 局部代码分析 1 精灵的定义 2 主游戏类定义 3 主程序运行 4 细节分析 三 心得
  • Gradle for Android 第三篇( 依赖管理 )

    转自 https segmentfault com a 1190000004237922 依赖管理 这会是一个系列 所以如果你还没有看我之前的几篇文章 请先查看以下文章 Gradle for Android 第一篇 从 Gradle 和 A
  • 【论文精读】QLORA: Efficient Finetuning of Quantized LLMs

    QLORA Efficient Finetuning of Quantized LLMs 前言 Abstract Introduction Background Block wise k bit Quantization Low rank
  • element的嵌套dialog,在打开第二个dialog的时候会被遮罩层遮住

    element嵌套dialog遮罩层的问题 做项目的时候遇到一个问题 在一个弹出层的内容区做处理打开另一个弹出层时 第二个弹出层会被遮罩层遮住 点击五次之后遮罩层关闭 然后才发现 element 的dialog嵌套问题 之所以第二次弹出的会
  • 华为OD机试真题 Java 实现【区块链文件转储系统】【2023Q2 200分】,附详细解题思路

    一 题目描述 区块链底层存储是一个链式文件系统 由顺序的N个文件组成 每个文件的大小不一 依次为F1 F2 Fn 随着时间的推移 所占存储会越来越大 云平台考虑将区块链按文件转储到廉价的SATA盘 只有连续的区块链文件才能转储到SATA盘上
  • 安全基础 --- JSON + 函数声明

    JSON 格式 JSON JavaScript Object Notation缩写 是一种用于数据交换的文本格式 目的是取代繁琐笨重的 XML 格式 1 规定 复合类型的值只能是数组或对象 不能是函数 正则表达式对象 日期对象 原始类型的值
  • centos是arm还是amd_amd系列cpu安装linux

    如何在 Linux 上安装 Intel 微代码固件 linux 的内核可以在引导时更新 cpu 固件 而无需 bios 更新 处理器的微码保存在内存中 在每次启动系统时 内核可以更新这个微码 这些来自 intelamd 的微码的更新可以去修
  • unity多个贴图shader

    在一个Material上放多个贴图的测试 比如一个plane上放四个贴图 Shader aaa Properties MainTex Texture 2D white MainTex2 Texture 2D white MainTex3 T