- Home /
Using UI textues authored in Gamma space in Linear mode
I would like to use UI textures authored in gamma space on linear mode. I found some information at this QA, but it seems that it didn't solve the problem.
https://answers.unity.com/questions/998820/ui-created-in-gamma-color-space-does-not-appear-co.html
The shader code mentioned in this answer did not solve the problem in my experiment. Appropriate alpha value changes according to RGB color in linear space blending. See the image below. This is more obvious when the background color is white.
Also, AFAIK, There is no practical way to reauthor linear texture with alpha channel in Photoshop. Our artist told me that we need to use AfterEffects or Nuke for reauthoring content for linear blending.
Does anyone knows any good way to solve this problem? I hope that Unity supports a feature that allow us to render UI in gamma space whether color space for 3d rendering is set to linear or not.
Answer by AMAT_Sooraj · Dec 07, 2018 at 01:54 AM
I'm having the exact same issue. UI looks the way it way it does in photoshop if I use Gamma color space and the 3D world looks much better in Linear color space. Is there a way we can make the UI appear like it does in Gamma after we switch to Linear?
Answer by Poulpizator · Feb 05, 2019 at 05:48 PM
I have exactly the same issue : Nobody knows how to author UI texture for the linear space ?
Answer by keni4 · Feb 12, 2019 at 10:29 AM
I solved this by writing ui shader with _Gamma property, and apply this to the sampled color alpha only(!):
Shader "UI/Alpha blend gamma"
{
Properties
{
_MainTex ("Texture", 2D) = "white" {}
_Gamma ("Gamma", Range(1, 2.2)) = 2.2
_Color ("Tint", Color) = (1,1,1,1)
_StencilComp ("Stencil Comparison", Float) = 8
_Stencil ("Stencil ID", Float) = 0
_StencilOp ("Stencil Operation", Float) = 0
_StencilWriteMask ("Stencil Write Mask", Float) = 255
_StencilReadMask ("Stencil Read Mask", Float) = 255
_ColorMask ("Color Mask", Float) = 15
}
SubShader
{
Tags
{
"Queue"="Transparent"
"IgnoreProjector"="True"
"RenderType"="Transparent"
"PreviewType"="Plane"
"CanUseSpriteAtlas"="True"
}
Stencil
{
Ref [_Stencil]
Comp [_StencilComp]
Pass [_StencilOp]
ReadMask [_StencilReadMask]
WriteMask [_StencilWriteMask]
}
Cull Off
Lighting Off
ZWrite Off
ZTest Off
Blend SrcAlpha OneMinusSrcAlpha
ColorMask [_ColorMask]
LOD 100
Pass
{
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#include "UnityCG.cginc"
struct appdata
{
float4 vertex : POSITION;
float4 color : COLOR;
float2 uv : TEXCOORD0;
};
struct v2f
{
half2 uv : TEXCOORD0;
fixed4 color : COLOR;
float4 vertex : SV_POSITION;
};
sampler2D _MainTex;
float4 _MainTex_ST;
v2f vert (appdata v)
{
v2f o;
o.vertex = UnityObjectToClipPos(v.vertex);
o.color = v.color;
o.uv = TRANSFORM_TEX(v.uv, _MainTex);
return o;
}
fixed4 _Color;
float _Gamma;
fixed4 frag (v2f i) : SV_Target
{
fixed4 col = tex2D(_MainTex, i.uv) * i.color;
col.a = pow(col.a, _Gamma);
return col * _Color;
}
ENDCG
}
}
}
Your answer
![](https://koobas.hobune.stream/wayback/20220612170133im_/https://answers.unity.com/themes/thub/images/avi.jpg)
Follow this Question
Related Questions
How to force to use Gamma Space instead of Linear Space? 1 Answer
UI created in Gamma color space does not appear correctly when switched to Linear 1 Answer
Unity Complete Editor Become Pink - Unity Editor Bug 1 Answer
Overly bright textures in linear color space, how to solve? [Solved] 1 Answer
How can i archive this lighting in Linear Color Space 0 Answers