首页 > 其他分享 >Unity 贴图叠加,添加水印

Unity 贴图叠加,添加水印

时间:2024-03-01 11:33:24浏览次数:38  
标签:贴图 MainTex WatermarkTex uv vertex 水印 Unity float4 TexelSize

原创内容,转载请标明出处

Shader "Custom/AddWatermarkShader"
{
    Properties
    {
        _MainTex("Main Texture", 2D) = "white" {}
        _WatermarkTex("Watermark Texture", 2D) = "white" {}
        _WatermarkPosition("Watermark Position", Vector) = (0, 0, 122, 34)
    }

    SubShader
    {
        Tags{ "Queue" = "Transparent" "IgnoreProjector" = "True" "RenderType" = "Transparent" }

        Pass
        {
            CGPROGRAM
            #pragma vertex vert
            #pragma fragment frag
            #include "UnityCG.cginc"

            struct appdata
            {
                float4 vertex : POSITION;
                float2 uv : TEXCOORD0;
            };

            struct v2f
            {
                float2 uv : TEXCOORD0;
                float4 vertex : SV_POSITION;
            };

            sampler2D _MainTex;
            float4 _MainTex_TexelSize;

            sampler2D _WatermarkTex;
            float4 _WatermarkTex_TexelSize;

            float4 _WatermarkPosition;

            v2f vert(appdata v)
            {
                v2f o;
                o.vertex = UnityObjectToClipPos(v.vertex);
                o.uv = v.uv;
                return o;
            }

            fixed4 frag(v2f i) : SV_Target
            {
                //计算水印贴图相对于底图的尺寸
                float2 ratio = float2(_WatermarkTex_TexelSize.z / _MainTex_TexelSize.z, _WatermarkTex_TexelSize.w / _MainTex_TexelSize.w);

                if (i.uv.x >= _WatermarkPosition.x && i.uv.x <= _WatermarkPosition.x + ratio.x &&
                    i.uv.y >= _WatermarkPosition.y && i.uv.y <= _WatermarkPosition.y + ratio.y)
                {
                    float2 watermarkUV = (i.uv - _WatermarkPosition.xy) / float2(ratio.x, ratio.y);
                    fixed4 watermarkColor = tex2D(_WatermarkTex, watermarkUV);
                    return watermarkColor;
                }
                else
                {
                    fixed4 mainColor = tex2D(_MainTex, i.uv);
                    return mainColor;
                }
            }
            ENDCG
        }
    }
}

  

标签:贴图,MainTex,WatermarkTex,uv,vertex,水印,Unity,float4,TexelSize
From: https://www.cnblogs.com/Jason-c/p/18046606

相关文章

  • Tiktok api接口 获取视频列表、用户详情,视频无水印数据采集
    iDataRiver平台https://www.idatariver.com/zh-cn/提供开箱即用的Tiktok数据采集API,供用户按需调用。接口使用详情请参考Tiktok接口文档接口列表1.获取用户详情参数类型是否必填默认值示例值描述apikeystring是idr_***从控制台里复制apikeyuser_idnu......
  • xlua - lua协程与Unity协程
    lua脚本:Assets/Lua/Test3.lua.txtlocalmove_end={}localLuaEnumeratorImpl={}LuaEnumeratorImpl.__index=LuaEnumeratorImplfunctionLuaEnumeratorImpl.new(coRun)localobj={}setmetatable(obj,LuaEnumeratorImpl)obj:ctor(coRun)retu......
  • 人工智能水印技术入门:工具与技巧
    近几个月来,我们看到了多起关于“深度伪造(deepfakes)”或人工智能生成内容的新闻报道:从泰勒·斯威夫特的图片、汤姆·汉克斯的视频到美国总统乔·拜登的录音。这些深度伪造内容被用于各种目的,如销售产品、未经授权操纵人物形象、钓鱼获取私人信息,甚至制作误导选民的虚假资料,它......
  • Unity3D 光照计算方向与法线贴图详解
    在Unity3D中,光照计算方向与法线贴图是实现高质量光照效果的重要技术之一。本文将详细介绍光照计算方向与法线贴图的原理和实现方法,并给出相应的代码示例。对啦!这里有个游戏开发交流小组里面聚集了一帮热爱学习游戏的零基础小白,也有一些正在从事游戏开发的技术大佬,欢迎你来交流学......
  • Unity3D 逐顶点光照与逐像素光照详解
    Unity3D提供了丰富的功能和工具,其中包括逐顶点光照和逐像素光照。本文将详细解释这两种光照技术的原理和实现方式,并提供代码示例。对啦!这里有个游戏开发交流小组里面聚集了一帮热爱学习游戏的零基础小白,也有一些正在从事游戏开发的技术大佬,欢迎你来交流学习。一、逐顶点光照逐......
  • Java中使用Graphics2D实现图片添加文字/图片水印
    场景java实现给图片添加水印实现步骤:获取原图片对象信息(本地图片或网络图片)添加水印(设置水印颜色、字体、坐标等)处理输出目标图片。注:博客:https://blog.csdn.net/badao_liumang_qizhi实现1、新建工具类 importorg.apache.commons.lang3.StringUtils;importjavax.im......
  • Unity xLua开发环境搭建与基础进阶
    Unity是一款非常流行的游戏开发引擎,而xLua是一个为Unity开发者提供的Lua框架,可以让开发者使用Lua语言来进行游戏开发。在本文中,我们将介绍如何搭建UnityxLua开发环境,并进行基础进阶的学习。 对啦!这里有个游戏开发交流小组里面聚集了一帮热爱学习游戏的零基础小白,也有一些正......
  • 智慧安防视频监控平台EasyCVR通道播放支持添加水印及操作步骤介绍
    智慧安防视频监控平台EasyCVR采用了开放式的网络结构,系统可支持的接入协议包括:国标GB28181、RTSP/Onvif、RTMP,以及厂家的私有协议与SDK,如:海康ehome、海康sdk、大华sdk、宇视sdk、华为sdk、萤石云sdk、乐橙sdk等,兼容各品牌的IPC、NVR、移动手持终端、执法仪、布控球、无人机等设备......
  • 最新Unity游戏主程进阶学习大纲(2个月)
    过完年了,很多同学开始重新规划自己的职业方向,找更好的机会,准备升职或加薪。今天给那些工作了1~5年的开发者梳理”游戏开发客户端主程”的学习大纲,帮助大家做好面试准备。适合Unity客户端开发者。进阶主程其实就是从固定的几个方面搭建好完整的知识体系做好对应的回答和准备,学习......
  • Unity对象池(应用:游戏音效管理系统)
    打算为项目增加音效,但是没有头绪不知从何做起。想要做一个便于拓展的音效管理系统,通过搜集网上资料暂时得到以下两种方案。(虽然实现方式远不止两种)其中对象池技术早有耳闻,趁此机会学习并应用。一、创建一个AudioManagerAudioManager通常是一个单例(Singleton)类,负责管理和播放游戏......