C for Graphic:Sliced Circle Image

      不做UI不知道,没想到时至今日,ugui居然没有sliced filled image模式,用circle做filled,不能用sliced九宫格图,导致每次使用这个效果必须一张新图,何其浪费资源。
      原始功能如下:
在这里插入图片描述
      我觉得还是自己写shader解决这个问题比较方便,原理很简单,通过frag函数逐uv扫描中心pixel坐标与uv pixel坐标的朝向向量,与轴向量(比如up direction)的夹角,从0-360度限制discard像素即可。
      唯一注意事项就是:夹角的正负值计算问题,这里我们用叉积判断正负值即可(unity右手坐标系扩展z轴)
      直接上代码:

Shader "UI360FilledAndSliced/UI360FilledUnlitShader"
{
    Properties
    {
        _MainTex ("Texture", 2D) = "white" {}
        _Axis("Axis",vector) = (0,0.5,0,0)
        _Degree("Degree",Range(0,360)) = 0
    }
    SubShader
    {
        Tags { "RenderType"="Transparent" "Queue"="Transparent" }
        LOD 100

        Pass
        {
            Blend SrcAlpha OneMinusSrcAlpha
            CGPROGRAM
            #pragma vertex vert
            #pragma fragment frag

            #define RAD2DEG 57.29578

            #include "UnityCG.cginc"

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

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

            sampler2D _MainTex;
            float4 _MainTex_ST;

            float2 _Axis;
            float _Degree;

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

            //unity右手坐标系

            //获取夹角正负值
            //左手定则
            float getClampPM(float2 f,float2 t)
            {
                float3 f3 = float3(f,0);
                float3 t3 = float3(t,0);
                float3 n3 = cross(f3,t3);
                return n3.z;
            }
            //计算夹角
            //左手定则
            float getClampDegree(float2 f,float2 t)
            {
                float cos = dot(f,t)/(length(f)*length(t));
                float deg = acos(cos)*RAD2DEG;
                float pm = getClampPM(f,t);
                if(pm>0)
                {
                    deg = 360-abs(deg);
                }
                return deg;
            }

            fixed4 frag (v2f i) : SV_Target
            {
                fixed4 col = tex2D(_MainTex, i.uv);
                float2 cuv = float2(0.5,0.5);
                float2 p2c = i.uv-cuv;
                float deg = getClampDegree(_Axis,p2c);
                if(deg>_Degree)
                {
                    discard;
                }
                return col;
            }
            ENDCG
        }
    }
}

      效果如下:
在这里插入图片描述
      后面我试了下最新的unity版本,ugui有一样的问题,可见unity还需要持续完善。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/326592.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Python数据分析案例34——IMDB电影评论情感分析(Transformer)

电影评论的情感分析 案例背景 很多同学对电影系列的数据都比较喜欢,那我就补充一下这个最经典的文本分类数据集,电影情感评论分析。用神经网络做。对国外的英文评论文本进行分类,看是正面还是负面情感。 数据集介绍 数据集:IMDb…

PY32C613单片机简单介绍,高性能 32 位 ARM M0+内核,主频最高48M

PY32C613单片机是普冉新推出的高性能的 32 位 ARM Cortex-M0 内核,宽电压工作范围的 MCU。价格在市场上非常有竞争性,外设非常的丰富。PY32C613嵌入高达 64 Kbytes flash 和 8 Kbytes SRAM 存储器,最高工作频率 48 MHz,QFN20封装。…

uniapp 图片保持宽高比,撑满屏幕宽度

image 标签添加 mode"widthFix" <image mode"widthFix" :src"detailData.coverImageURL" />image 标签添加样式 image {width: 100%;height: auto; }

x-cmd pkg | sd - sed 命令的现代化替代品

目录 简介首次用户快速上手主要特点进一步阅读 简介 sd 是一个基于正则表达式的搜索和替换文本的命令行工具&#xff0c;类似于 sed&#xff0c;但 sd 使用更简单&#xff0c;对用户更为友好。 首次用户快速上手 使用 x sd 即可自动下载并使用 在终端运行 eval "$(curl …

【分布式技术】分布式存储ceph部署

目录 一、存储的介绍 单机存储设备 单机存储的问题 商业存储 分布式存储 二、分布式存储 什么是分布式存储 分布式存储的类型 三、ceph简介 四、ceph的优点 五、ceph的架构 六、ceph的核心组件 七、OSD存储后端 八、Ceph 数据的存储过程 九、Ceph 版本发行生命周…

单片机和Linux嵌入式区别

1.单片机 单片机是一种集成电路&#xff0c;它能够在一个芯片上完成各种计算、控制和管理任务。单片机没有明确的分层&#xff0c;这是因为它通常被用来设计嵌入式系统&#xff0c;其程序结构和功能要根据具体的应用需求来设计。 在单片机的程序设计中&#xff0c;可以通过一…

SQL Server Management Studio (SSMS) 备份数据库

文章目录 前言一、在界面上操作二、使用sql 代码操作总结 前言 之前的文章记录过如何使用sqlserver复制远程数据库到本地。这里补充下如何使用SQL Server Management Studio (SSMS) 备份。 传送门&#xff1a;sqlserver复制远程数据库到本地 一、在界面上操作 在 SQL Server …

AP上线配置流程

AP工作模式 相应地&#xff0c;AR路由器的WLAN工作模式分为FAT AP和AC两种模式&#xff0c;不同的模式对应不同的使用场景。 FAT AP模式&#xff1a;AR路由器作为FAT AP&#xff0c;独立为用户提供WLAN接入服务&#xff0c;无线网络的配置在FAT AP上单独配置。FAT AP模式主要…

链上繁荣,合作不断,外媒热议波场 TRON 2023 年度成绩

近日&#xff0c;权威外媒Theblock、美联社和Decrypt等就波场 TRON 2023大事件进行了年度盘点。报道指出&#xff0c;波场TRON网络在2023年取得了一系列的发展和合作&#xff0c;提升了其在Web3领域的地位。其中&#xff0c;波场TRON网络账户数量增加了 54&#xff05;&#xf…

微信视频号提取视频工具和提取器有什么不同?怎么下载和使用!

微信视频号怎么提取视频和视频号提取器有啥区别&#xff1f;这个是最近问我特别多的小伙伴&#xff0c;今天就和大家讲讲两者有什么不同怎么使用&#xff01; 视频号视频提取工具和提取器在早期区分的是网页工具和电脑上软件使用的一种方式&#xff0c;用户通过这些方式解决自…

深度系统QT 环境搭建

1.QT安装 不折腾最新版直接去商店搜索QT安装。 2.修改su密码&#xff0c;安装需要权限 打开一个终端&#xff0c;然后输入下面的命令&#xff1a;按照提示输入密码按回车就行。 sudo passwd 回车后会出现让你输入现在这个账户的密码&#xff1a; 3.编译环境安装。 安…

DHCP详解(配置小实验)

目录 一、DHCP 1、了解DHCP 2、使用DHCP的好处 3、HDCP的分配方式 4、DHCP协议中的报文 5、DHCP的租约过程 6、安装和配置DHCP服务 一、DHCP 1、了解DHCP DHCP(Dynamic Host Configuration Protocol&#xff0c;动态主机配置协议)由Internet工作任务小组设计开发专门用…

计算机毕业设计 | vue+springboot高校宿舍管理系统(附源码)

1&#xff0c;绪论 研究背景 学生管理是学校教育系统的一个十分重要的部分&#xff0c;其中学生宿舍的管理又是学校管理中较复杂的一部分。学生宿舍不只是简单的一个居住场所&#xff0c;而是高校实施教育过程&#xff0c;培养人才不可或缺的一个硬件条件&#xff0c;是大学文…

docker-consul部署

目录 一、环境 二、consul服务器 三、registrator服务器 四、consul-template 一、环境 consul服务器 192.168.246.10 运行consul服务、nginx服务、consul-template守护进程 registrator服务器 192.168.246.11 运行registrator容器、运行ngi…

烟火检测/周界入侵/视频智能识别AI智能分析网关V4如何配置ONVIF摄像机接入

AI边缘计算智能分析网关V4性能高、功耗低、检测速度快&#xff0c;易安装、易维护&#xff0c;硬件内置了近40种AI算法模型&#xff0c;支持对接入的视频图像进行人、车、物、行为等实时检测分析&#xff0c;上报识别结果&#xff0c;并能进行语音告警播放。算法可按需组合、按…

uniapp中uview组件库Toast 消息提示 的使用方法

目录 #基本使用 #配置toast主题 #toast结束跳转URL #API #Props #Params #Methods 此组件表现形式类似uni的uni.showToastAPI&#xff0c;但也有不同的地方&#xff0c;具体表现在&#xff1a; uView的toast有5种主题可选可以配置toast结束后&#xff0c;跳转相应URL目…

sphinx,一个神奇的 Python 库!

更多资料获取 &#x1f4da; 个人网站&#xff1a;ipengtao.com 大家好&#xff0c;今天为大家分享一个神奇的 Python 库 - sphinx。 Github地址&#xff1a;https://github.com/sphinx-doc/sphinx/ 在软件开发和项目管理中&#xff0c;文档是不可或缺的一部分。好的文档可以…

如何在Docker中搭建MinIO容器并实现无公网ip远程访问本地服务

文章目录 前言1. Docker 部署MinIO2. 本地访问MinIO3. Linux安装Cpolar4. 配置MinIO公网地址5. 远程访问MinIO管理界面6. 固定MinIO公网地址 前言 MinIO是一个开源的对象存储服务器&#xff0c;可以在各种环境中运行&#xff0c;例如本地、Docker容器、Kubernetes集群等。它兼…

阿里云有哪些优势?为什么选择阿里云?

为什么选择阿里云&#xff1f;阿里云服务器有哪些优势&#xff1f;阿里云全球第三&#xff0c;国内第一云&#xff0c;阿里云服务器网aliyunfuwuqi.com分享云服务器ECS在丰富ECS实例架构、弹性灵活、稳定可靠、便捷易用、安全保障和成本优化多方面优势&#xff1a; 阿里云服务…

链动2+1模式:合法合规的商业奇迹,引爆裂变式增长!

在各平台都饱和的情况下&#xff0c;如何快速吸引用户并实现裂变式增长成为了众多企业和平台的共同难题。而链动21模式&#xff0c;作为一种新兴的商业模式&#xff0c;正在成为解决这一难题的有效途径。本文将深入解析链动21模式的奥秘&#xff0c;带你领略这种合法合规的商业…