-->

using UnityEngine;
public class TestPreprocessor : MonoBehaviour
{
private void Start()
{
<grn>//iOSビルド時はこっちの処理</grn>
#if UNITY_IOS
Debug.Log("iOSの処理");
<grn>//Androidビルド時はこっちの処理</grn>
#elif UNITY_ANDROID
Debug.Log("Androirの処理");
#endif
}
}
private void Start()
{
Debug.Log("iOSの処理");
}
private void Start()
{
Debug.Log("Androirの処理");
}
half4 frag (Varyings input) : SV_Target
{
half4 col = SAMPLE_TEXTURE2D(_MainTex, sampler_MainTex, input.uv);
//_SILHOUETTE_NOのキーワードを選択している時は以下のコード
#if defined(_SILHOUETTE_NO)
col.rgb *= input.color;
//_SILHOUETTE_BLUEのキーワードを選択している時は以下のコード
#elif defined(_SILHOUETTE_BLUE)
col.rgb = half3(0, 0, 1);
//_SILHOUETTE_REDのキーワードを選択している時は以下のコード
#elif defined(_SILHOUETTE_RED)
col.rgb = half3(1, 0, 0);
#endif
return col;
}

Shader "UI/TestVariant"
{
Properties
{
//インスペクターからVariantを選択させるため設定
[KeywordEnum(No, Blue, Red)] _SILHOUETTE("Silhouette Mode", Float) = 0
}
SubShader
{
Tags
{
"RenderPipeline" = "UniversalPipeline"
"Queue" = "Transparent"
}
Cull Off
ZWrite Off
Blend SrcAlpha OneMinusSrcAlpha
Pass
{
HLSLPROGRAM
#pragma vertex vert
#pragma fragment frag
//Variantのキーワードを定義
#pragma shader_feature _SILHOUETTE_NO _SILHOUETTE_BLUE _SILHOUETTE_RED
#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl"
struct Attributes
{
float4 positionOS : POSITION;
float2 uv : TEXCOORD0;
half4 color : COLOR;
};
struct Varyings
{
float4 positionCS : SV_POSITION;
float2 uv : TEXCOORD0;
half4 color : COLOR;
};
//uGUI Image > Source Imageにアタッチされた画像を参照する
TEXTURE2D(_MainTex);
SAMPLER(sampler_MainTex);
Varyings vert (Attributes input)
{
Varyings output;
output.positionCS = TransformObjectToHClip(input.positionOS.xyz);
output.uv = input.uv;
output.color = input.color;
return output;
}
half4 frag (Varyings input) : SV_Target
{
half4 col = SAMPLE_TEXTURE2D(_MainTex, sampler_MainTex, input.uv);
//_SILHOUETTE_NOのキーワードを選択している時は以下のコード
#if defined(_SILHOUETTE_NO)
col.rgb *= input.color;
//_SILHOUETTE_BLUEのキーワードを選択している時は以下のコード
#elif defined(_SILHOUETTE_BLUE)
col.rgb = half3(0, 0, 1);
//_SILHOUETTE_REDのキーワードを選択している時は以下のコード
#elif defined(_SILHOUETTE_RED)
col.rgb = half3(1, 0, 0);
#endif
return col;
}
ENDHLSL
}
}
}
Properties
{
//インスペクターからVariantを選択させるため設定
[KeywordEnum(No, Blue, Red)] _SILHOUETTE("Silhouette Mode", Float) = 0
}
//Variantのキーワードを定義
#pragma shader_feature _SILHOUETTE_NO _SILHOUETTE_BLUE _SILHOUETTE_RED
Properties
{
//インスペクターからVariantを選択させるため設定
[KeywordEnum(No, Blue, Red)] _silhouette("Silhouette Mode", Float) = 0
}
//Variantのキーワードを定義
#pragma shader_feature _silhouette_NO _silhouette_BLUE _silhouette_RED
//Variantのキーワードを定義
#pragma shader_feature _SILHOUETTE_NO _SILHOUETTE_BLUE _SILHOUETTE_RED
half4 frag (Varyings input) : SV_Target
{
half4 col = SAMPLE_TEXTURE2D(_MainTex, sampler_MainTex, input.uv);
//_SILHOUETTE_NOのキーワードを選択している時は以下のコード
#if defined(_SILHOUETTE_NO)
col.rgb *= input.color;
//_SILHOUETTE_BLUEのキーワードを選択している時は以下のコード
#elif defined(_SILHOUETTE_BLUE)
col.rgb = half3(0, 0, 1);
//_SILHOUETTE_REDのキーワードを選択している時は以下のコード
#elif defined(_SILHOUETTE_RED)
col.rgb = half3(1, 0, 0);
#endif
return col;
}

//Variantのキーワードを定義
//#pragma shader_feature _SILHOUETTE_NO _SILHOUETTE_BLUE _SILHOUETTE_RED
#pragma multi_compile _SILHOUETTE_NO _SILHOUETTE_BLUE _SILHOUETTE_RED