前提・実現したいこと
Unityのfragmentシェーダーの色の出力について質問です
0~255の整数で256段階に表現された色をfloatもしくはfixedに戻して出力したいのですがそのまま256で割るだけだとうまくいきませんでした
出力した色をスクショしてペイントソフトで調べてみたところ、元のfloatの値が0.1だったら89だったり、0.01だったら25だったり、どのような規則があるのかわかりませんでした
intの色とfloatかfixedの色を相互に変換するにはどうすれば良いのでしょうか
unityのバージョンは2017.4.15f1です
Shader "Unlit/color test" { Properties { _MainTex ("Texture", 2D) = "white" {} } SubShader { Tags { "RenderType"="Opaque" } LOD 100 Pass { CGPROGRAM #pragma vertex vert #pragma fragment frag // make fog work #pragma multi_compile_fog #include "UnityCG.cginc" struct appdata { float4 vertex : POSITION; float2 uv : TEXCOORD0; }; struct v2f { float2 uv : TEXCOORD0; UNITY_FOG_COORDS(1) float4 vertex : SV_POSITION; }; sampler2D _MainTex; float4 _MainTex_ST; v2f vert (appdata v) { v2f o; o.vertex = UnityObjectToClipPos(v.vertex); o.uv = TRANSFORM_TEX(v.uv, _MainTex); UNITY_TRANSFER_FOG(o,o.vertex); return o; } float4 frag (v2f i) : SV_Target { float4 col; col.rgb = 0.0; //128になってほしいがスクショすると188になる col.r = float(128.0 / 255.0); //25になってほしいがスクショすると88になる // col.r = float(25 / 255.0); col.a = 1.0; col.gb = 0.0; return col; } ENDCG } } }
まだ回答がついていません
会員登録して回答してみよう