unity-shader-max导出多套uv给unity使用
·
title: unity-shader-max导出多套uv给unity使用
categories: Unity3d-Shader
tags: [unity, shader, uv, max, uv sets]
date: 2019-05-22 00:03:14
comments: false
在看 GPU Gems 2 的 草 的时候, 看到里面的 风 在影响顶点的时候, 这个技巧是在顶点定义中带一个混合权重 (参考: [《GPU%20Gems%202》全书提炼总结/Part1#124-风](https://github.com/QianMo/Game-Programmer-Study-Notes/tree/master/Content/《GPU Gems 2》全书提炼总结/Part1#124-风)) , 那么这个 权重 就可以放在 顶点色 或 uv 中. 如果放在 uv 中, 那么久需要多套 uv 了.
前篇
unity 目前只支持顶点存 四套uv. (从源码上看出来)
namespace UnityEngine.Rendering {
public enum UVChannelFlags {
UV0 = 1,
UV1 = 2,
UV2 = 4,
UV3 = 8
}
}
shader graph 中也可以看出来

max 添加多套 uv
-
添加一个 uv展开 修改器, 贴图通道 默认指定为1 (也就是第一套 uv), 然后编辑 uv, 编辑完 塌陷 这个修改器. 第一套 uv 制作完
-
再添加一个 uv展开 修改器, 贴图通道 指定为2 (也就是第二套 uv), 此时会谈个提示框, 选择 放弃 ( 选择 移动 的话会把之前的 uv 移到第二套 uv 上), 然后编辑 uv, 编辑完 塌陷 这个修改器. 第二套 uv 制作完.
如此类推可以继续添加多套 uv, 如果第二套 uv 想在第一套的基础上修改, 可以在 第一套 uv 中保存一下, 在编辑第二套 uv 时加载进来. -
丢到 unity 中, 可以看到模型里包含的几套uv ( uv,uv2,uv3… )

unity 使用多套 uv
-
shader, 拿最简单的 unlit shader 改一下
Shader "test/multiUV" { Properties { _MainTex ("Texture", 2D) = "white" {} [KeywordEnum(UV0, UV1, UV2)] _UVSet ("UV Set for textures", Float) = 0 } SubShader { Tags { "RenderType"="Opaque" } LOD 100 Pass { CGPROGRAM #pragma vertex vert #pragma fragment frag // make fog work #pragma multi_compile_fog #pragma multi_compile _UVSET_UV0 _UVSET_UV1 _UVSET_UV2 #include "UnityCG.cginc" struct appdata { float4 vertex : POSITION; float2 texUV0 : TEXCOORD0; float2 texUV1 : TEXCOORD1; // 多套uv的语义声明 float2 texUV2 : TEXCOORD2; }; struct v2f { float2 uv : TEXCOORD0; UNITY_FOG_COORDS(1) float4 vertex : SV_POSITION; }; sampler2D _MainTex; float4 _MainTex_ST; half _UVSet; v2f vert (appdata v) { v2f o; #if _UVSET_UV0 float2 dstUv = v.texUV0; #elif _UVSET_UV1 float2 dstUv = v.texUV1; #else float2 dstUv = v.texUV2; #endif o.vertex = UnityObjectToClipPos(v.vertex); o.uv = TRANSFORM_TEX(dstUv, _MainTex); UNITY_TRANSFER_FOG(o,o.vertex); return o; } fixed4 frag (v2f i) : SV_Target { fixed4 col = tex2D(_MainTex, i.uv); UNITY_APPLY_FOG(i.fogCoord, col); return col; } ENDCG } } } -
效果

更多推荐



所有评论(0)