在Unity中如何使两个精灵的重叠区域透明?

2024-03-30

在Unity中如何使两个精灵的重叠区域透明?你能写一个关于它的着色器吗?经过一些研究,我了解到我应该使用模板缓冲区,但我不知道如何使用。这对我来说至关重要。我必须在 6 天内完成这个学校项目。 请帮忙..=(

示例图片:


就这样,请记住这是我第一次使用模板,所以我可能做了一些不太理想的事情。但它可以按照您的要求与精灵一起使用。

// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)'

Shader "Sprites/Stencil"
{
    Properties
    {
        [PerRendererData] _MainTex ("Sprite Texture", 2D) = "white" {}
        _Color ("Tint", Color) = (1,1,1,1)
        [MaterialToggle] PixelSnap ("Pixel snap", Float) = 0
    }

    SubShader
    {
        Tags
        { 
            "Queue"="Transparent" 
            "IgnoreProjector"="True" 
            "RenderType"="Transparent" 
            "PreviewType"="Plane"
            "CanUseSpriteAtlas"="True"
        }

        Cull Off
        Lighting Off
        ZWrite Off
        Blend One OneMinusSrcAlpha



        Pass
        {
            Stencil {
                Ref 1
                Comp Greater
                Pass replace
                Fail Zero
            }

        CGPROGRAM
            #pragma vertex vert
            #pragma fragment frag

            struct appdata {
                float4 vertex : POSITION;
            };
            struct v2f {
                float4 pos : SV_POSITION;
            };
            v2f vert(appdata v) {
                v2f o;
                o.pos = UnityObjectToClipPos(v.vertex);
                return o;
            }
            half4 frag(v2f i) : SV_Target {
                return half4(0,0,0,0);
            }
        ENDCG
        }

        Pass
        {
            Stencil {
                Ref 1
                Comp equal
                Pass keep 
            }

        CGPROGRAM
            #pragma vertex vert
            #pragma fragment frag
            #pragma multi_compile _ PIXELSNAP_ON
            #include "UnityCG.cginc"

            struct appdata_t
            {
                float4 vertex   : POSITION;
                float4 color    : COLOR;
                float2 texcoord : TEXCOORD0;
            };

            struct v2f
            {
                float4 vertex   : SV_POSITION;
                fixed4 color    : COLOR;
                float2 texcoord  : TEXCOORD0;
            };

            fixed4 _Color;

            v2f vert(appdata_t IN)
            {
                v2f OUT;
                OUT.vertex = UnityObjectToClipPos(IN.vertex);
                OUT.texcoord = IN.texcoord;
                OUT.color = IN.color * _Color;
                #ifdef PIXELSNAP_ON
                OUT.vertex = UnityPixelSnap (OUT.vertex);
                #endif

                return OUT;
            }

            sampler2D _MainTex;
            sampler2D _AlphaTex;
            float _AlphaSplitEnabled;

            fixed4 SampleSpriteTexture (float2 uv)
            {
                fixed4 color = tex2D (_MainTex, uv);

#if UNITY_TEXTURE_ALPHASPLIT_ALLOWED
                if (_AlphaSplitEnabled)
                    color.a = tex2D (_AlphaTex, uv).r;
#endif //UNITY_TEXTURE_ALPHASPLIT_ALLOWED

                return color;
            }

            fixed4 frag(v2f IN) : SV_Target
            {
                fixed4 c = SampleSpriteTexture (IN.texcoord) * IN.color;
                c.rgb *= c.a;
                return c;
            }
        ENDCG
        }
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在Unity中如何使两个精灵的重叠区域透明? 的相关文章

  • 如何使用 apache2 和 mod_proxy_fcgi 禁用缓冲?

    我在 debian Jessie 上使用 mod proxy fcgi 和 apache 2 4 以及我的 C 应用程序 该应用程序使用 libfcgipp 执行 ServerSentEvents 我的问题是 apache 仍然缓冲我的响应
  • 了解 netty 通道缓冲区和水印

    我正在尝试了解网络缓冲区和水印 作为一个测试用例 我有一个 netty 服务器 它向客户端写入数据 客户端被阻止 基本上每次读取之间有 10 秒的睡眠时间 在正常 I O 下 如果接收方被阻塞 TCP 发送方将受到限制 由于流量控制 发送速
  • GLSL 中统一浮点行为和常量浮点行为的不同

    我正在尝试在 GLSL 中实现模拟双精度 并且观察到一种奇怪的行为差异 导致 GLSL 中出现细微的浮点错误 考虑以下片段着色器 写入 4 浮点纹理以打印输出 layout location 0 out vec4 Output unifor
  • 如何在使用 Cmake 构建期间编译 HLSL 着色器?

    我正在开发 d3d 应用程序 我想在使用 cmake 构建期间编译我的 hlsl 着色器 我不知道从哪里开始 这是我当前的 CMakeLists txt cmake minimum required VERSION 3 20 project
  • 如何在Unity Inspector中创建多维数组?

    如何在 Unity Inspector 中创建枚举多维数组并使其可序列化 以便我可以从不同的脚本调用它 public enum colors red blue green yellow cyan white purple public in
  • 内存高效的大型数据集流式传输到 S3

    我正在尝试使用 SQL alchemy 复制 S3 大型数据集 大于 RAM 我的限制是 我需要使用 sqlalchemy 我需要将内存压力保持在最低水平 我不想使用本地 filsystem 作为中间步骤将数据发送到 s3 我只想通过管道将
  • 在 Unity 中平滑动态生成的网格?

    给定 Unity 和 C 中的网格 其本身是通过合并更简单的基础网格实时创建的 我们如何在运行时 将其变成平滑的 几乎像包裹在布中的网格版本一样 不是完全凸出的版本 而是更圆润 软化锋利的边缘 桥接深间隙等 理想情况下 表面也将像 平滑角度
  • 丢弃对 OpenGL 中的程序性能有影响吗?

    我正在读书this http code google com p gdc2011 android opengl wiki TalkTranscript文章 作者写道 以下是如何通过两个简单的步骤在每个平台上编写高性能应用程序 遵循最佳实践
  • cout什么时候刷新?

    I know endl或致电flush 将冲洗它 我也知道当你打电话时cin after cout 它也会冲水 还有当程序退出时 是否还有其他情况cout脸红 我只是写了一个简单的循环 我没有刷新它 但我可以看到它被打印到屏幕上 为什么 谢
  • Three.js、自定义着色器和具有透明度的 png 纹理

    我有一个非常简单的 PNG 纹理 一个带有透明背景的灰色圆圈 我用它作为制服map for a THREE ShaderMaterial var uniforms THREE UniformsUtils merge basicShader
  • Unity C# 嵌套 IEnumerator

    在我的代码中 我嵌套了 IEnumerator 方法 如下所示 private IEnumerator PerformRequest string url Doing stuff UnityWebRequest request UnityW
  • Shader的功能参数表现

    我试图了解如何在着色器语言中实现传递参数 我读过几篇文章和文档 但仍然有一些疑问 特别是我试图理解与C 函数调用 特别强调性能 之间略有差异HLSL Cg and GLSL但我猜下划线的实现非常相似 到目前为止我所理解的 除非另有说明 函数
  • 如何通过 Web-Workers 传递自定义类实例?

    由于 Web Worker JSON 在线程之间序列化数据 因此这样的方法不起作用 worker js function Animal Animal prototype foobar function self onmessage func
  • OpenGL 缓冲区、glFlush 和 glutSwapBuffers()

    使用之间有什么区别吗 glutInitDisplayMode GLUT SINGLE GLUT RGB with glFlush and glutInitDisplayMode GLUT DOUBLE GLUT RGB with glutS
  • 找到一个用于从 Unity 4.* 构建的 android 包的混淆工具 [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我曾经做过一个游戏Unity引擎 用C 编写 现在我想发布一个Android 版本到 Google Pl
  • 在 Unity 中实现 Fur with Shells 技术

    我正在尝试在 Unity 中实现皮毛贝壳技术 http developer download nvidia com SDK 10 5 direct3d Source Fur doc FurShellsAndFins pdf Fins 技术被
  • 模块中的类无法加载

    我正在开发一个 2D Unity android 游戏 其中我最近添加了 Firebase Beta SDK 但添加后FirebaseAnalytics unitypackage我面临的错误是 无法加载模块中的类 当我删除文件夹时Fireb
  • GNU 屏幕:环境变量

    更新 问题与问题相关GNU Screen 程序员在 Readbuf 中引用的内容 https stackoverflow com questions 1318186 gnu screen programmer quotes in readb
  • Unity 2d跳跃脚本

    有人有一个很好的统一 2d 游戏跳跃脚本吗 我的代码可以工作 但距离跳跃还很远 看起来像是在飞 using UnityEngine using System Collections public class movingplayer Mon
  • Unity3D StartCoroutine 调用一个函数,该函数什么时候返回?

    我知道Unity3D StartCoroutine调用了一个与StartCoroutine在同一线程上运行的函数 但是被调用的函数什么时候返回到原始调用者 我在互联网上查找了一个很好的 Unity3D Coroutine 示例 但找不到完整

随机推荐

  • 如何使用 wix 将多个元素添加到 XML 配置文件中?

    我正在尝试使用 Wix 编辑 XML 文件 我正在使用与 Wix 3 7 捆绑在一起的 WixUtilExtension xml 文件是在 Visual Studio 2010 中为 C 应用程序创建的设置文件 在此文件中 我使用一个用于在
  • matplotlib 仅显示一组 10 个图形中的一个,就像幻灯片一样

    I have a set of 10 graphs based on X Y pairs In this example only 3 Displaying one graph is easy same to all graphs in t
  • 如何将字节数组转换为图像文件?

    我在我的 MVC Web 应用程序中浏览并上传了 png jpg 文件 我已将此文件作为 byte 存储在我的数据库中 现在我想读取 byte 并将其转换为原始文件 我怎样才能做到这一点 创建一个内存流 http msdn microsof
  • C 标准库和 C POSIX 库的区别

    我对 C standard lib 和 C POSIX lib 有点困惑 因为我发现 C POSIX lib 中定义的许多头文件也是 C standard lib 的一部分 所以 我假设 C standard lib 是由ANSI C组织定
  • iOS 应用程序仅在未调试时崩溃

    我正在使用 testflight 来测试我的应用程序 并且只有当应用程序是为临时构建并通过测试飞行分发时才会发生崩溃 相关崩溃报告详细信息如下 Date Time 2012 06 11 09 00 34 638 0800 OS Versio
  • PowerShell:如何设置文化?

    我尝试过了Set Culture CultureInfo vi VN但Powershell并没有改变我设定的文化 我通过打开Powershell ISE进行测试 看到我设置的文化已成功更改 如何使用 Powershell 更改我设定的文化
  • C# .net 相当于 HTTP_RAW_POST_DATA?

    想要在 C 中模仿 php 代码 我想捕获从以下 Flash Actionscript 发布的原始图像数据 function onSaveJPG e Event void var myEncoder JPGEncoder new JPGEn
  • PyMongo 不会迭代集合

    我在 Python PyMongo 中有奇怪的行为 dbh self connection test first dbh test 1 second dbh test 2 first collection records first fin
  • 如何将 C++ 程序连接到 WCF 服务?

    在我工作的地方 有一些用 C 编写的软件 还有一些用 C 编写的软件 最重要的 不久前 我们认为通过 Web 服务发送堆栈跟踪和异常信息来跟踪软件中任何可能的问题是一个好主意 因此 我使用了 WCF 服务 它获取信息并将其存储在数据库中并自
  • WCF 是否支持点对点实现?

    我正在尝试在 LAN 内实现点对点消息传递和文件共享实用程序 那么 WCF 支持 p2p 吗 有人尝试过通过 WCF 进行文件共享吗 是的 它确实 请参见如何在对等网络中设计状态共享 http msdn microsoft com en u
  • 在 Tensorflow 中检索 LSTM 序列的最后一个值

    我有不同长度的序列 想在 Tensorflow 中使用 LSTM 进行分类 对于分类 我只需要每个序列最后一个时间步长的 LSTM 输出 max length 10 n dims 2 layer units 5 input tf place
  • 如何实现widget在垂直(高度)和水平(宽度)方向上的扩展

    下面的代码列出了一个图表 我需要在其中实现图表在垂直 高度 和水平 宽度 方向上的扩展 建议的方法 例如https docs flutter io flutter widgets Row class html https docs flut
  • PostgreSQL 只支持 STORED 生成列吗? [复制]

    这个问题在这里已经有答案了 前言 我给出了一些 PHP 示例 只是为了指出我的开发环境 问题不在于 PHP 而纯粹在于 PostgreSQL PostgreSQL有关生成列的文档 https www postgresql org docs
  • 直接从 iPhone 向在线服务器执行 SQL 查询

    我是一个新手 倾向于做一些简单的iOS应用程序 该任务是制作一个应用程序 为一个人进行注册 然后将该数据上传到在线服务器 详细一点 我想insert delete update数据直接传输到在线服务器 有人能告诉我我需要做什么 工具 库 吗
  • 无法在具有 CORS 的 AWS API Gateway 上使用自定义请求标头

    我创建并部署了具有以下结构的 AWS API Gateway 资源 其中包括自定义 HTTP 请求标头 X header dev stage echo resource POST method Method Request Headers
  • 为 Cocoa 寻找类似电子表格的控件

    我正在寻找 Cocoa 的网格视图 表格视图 电子表格类型控件 但似乎找不到任何处于任何合理状态的东西 我尝试过使用 NSTableView 但它并不是真正的单个单元格控件 NSCollectionView 似乎也不对 有任何想法吗 而马特
  • 可以使用 Azure Powershell 创建应用服务计划吗?

    正如标题所说 我需要以编程方式创建应用程序服务计划 场景 将创建 N 个 azure 网站 动态地 也使用 azure powershell 如果有一天高级应用服务计划无法处理网站数量 即使通过 CPU 使用情况自动缩放 则必须创建另一个服
  • 如何使用 PHP 在点击时自动填充其他表单字段

    我现在有一个简单的表格
  • 如何使用 fetch 和 FormData 发送二进制数据 (blob)?

    以下代码按预期工作 在 Google Chrome 上打开页面 https wiki epfl ch 然后在开发者控制台上执行此代码 注意 页面 https wiki epfl ch test php 不存在 因此无法加载 但这不是问题 r
  • 在Unity中如何使两个精灵的重叠区域透明?

    在Unity中如何使两个精灵的重叠区域透明 你能写一个关于它的着色器吗 经过一些研究 我了解到我应该使用模板缓冲区 但我不知道如何使用 这对我来说至关重要 我必须在 6 天内完成这个学校项目 请帮忙 示例图片 就这样 请记住这是我第一次使用