【Unity编辑器】UVPreview扩展

本文介绍了如何在Unity编辑器中扩展功能,实现直接在Inspector中预览 GameObject 的 UV 和光照贴图UV布局。通过使用几何着色器和C#反射技术,实现了UV的高效渲染。关键步骤包括:1) 使用几何着色器和Shader绘制UV;2) 根据mesh的UV信息计算并生成uvmesh进行绘制;3) 扩展GameObjectInspector以显示UV预览。文章还提供了下载链接和作者的其他文章链接。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近为美术开发一个可以直接在unity中预览uv的编辑器,考虑到实用性,直接扩展了GameObject的Inspector,在GameObject的Preview中增加绘制UV的预览,支持查看模型光照贴图的UV布局:

效果:
UV预览:


光照贴图UV预览:


关键技术:几何着色器,C#反射

核心功能即UV的渲染,因此放到最前面讲:
第一步、uvmesh和uv绘制shader
最开始打算使用GL或Handles.DrawLine来绘制( 注意Handles.DrawLine实际上就是封装了GL而已),但是对于面数高的模型效率不太高,所以考虑直接用集合着色器。可以通过mesh的uv信息生成一个用于渲染uv的mesh,也可以考虑直接在着色器中计算uv来渲染。
另外注意:由于几何着色器的特性需要target4.0,且PC上需要DX10以上才可以使用,如果当前Build Setting里并非PC平台,或没设置里没有勾选DX11,或这Graphics Emulation中勾选了OpenGl es2.0,则可能导致渲染uv的shader无法工作,不过unity为我们提供了一个Shader Tag: “ForceSupported”=”True”,加上这个标签后,除非你的显卡本身不支持几何着色器或不支持DX,否则不管当前的设置是什么都会强制支持。

UV渲染shader:
Tags{ "RenderType" = "Transparent" "Queue"="Transparent" "ForceSupported"="True" }
Pass
{
    cull off
    zwrite off
    blend srcalpha oneminussrcalpha
    CGPROGRAM
    #pragma vertex vert
    #pragma geometry geom
    #pragma fragment frag
    #pragma exclude_renderers opengl
    #pragma target 4.0
         
    #include "UnityCG.cginc"
 
    struct appdata
    {
        float4 vertex : POSITION;
    };
 
    struct v2g
    {
        float4 vertex : SV_POSITION;
        float4 worldPos : TEXCOORD0;
    };
 
  
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值