入力カラー値の変換テスト
どうやら数値入力は色空間の指定はレンダリング空間で行うことになっている。そのためレンダリング空間を後から変えると設定した色が物理的には違った色になってしまう。
なのでレンダリング空間を後から変えた場合はカラーの値を修正しなくてはいけない。
入力カラー値に対しての色空間指定はできないことが問題。(テクスチャではできる)
一応ディスプレイ空間での数値の参照と入力は可能だが、レンダリング空間に紐づいているため注意が必要。
例えばレンダリング空間がACEScgで表示空間がsRGBだった場合はカラー値の入力としてはXYZを使うことはできない。
この場合はレンダリング空間のACEScgの値を直接入力するか表示空間のsRGBで入力するしかない。
試しにDisplay Spaceで値を入れる
レンダリングスペース | scene-Linear CIX XYZ |
---|---|
ビュー変換
|
sRGB gamma
|
左はビュースペース(sRGB) R=G=B= 1.0 右はR=G=B= 0.3 としてレンダリングスペースに切り替えた時の値を確認。
表示空間 | レンダリング空間 | |
---|---|---|
R | 0.3 | 0.070 |
G | 0.3 | 0.073 |
B | 0.3 | 0.080 |
表示空間sRGB(D65)の値をレンダ空間XYZに変換された値になっていることがわかる。
sRGB値 ←→ リニアsRGB ←→ CIE XYZ
このXYZはリニア値であり、この値がレンダリング空間で使われる値となる
検算する場合はここを使うとよい
http://www.brucelindbloom.com/ColorCalculator.html (Lindbloomのサイト)
↓
表示空間で値を見たり入力することはできるが、レンダ空間を切り替えた場合は表示空間での値が変更される。(カラー値がレンダリング空間に紐づいているため)
ここがテクスチャの場合とおおきく違う。
正しい値を入れていた場合に、後からレンダ空間を切り替えたら、そのレンダ空間で正しくなるように値を変換しなおさなくてはいけない
Display Spaceの外側の色は?
DisplaySpaceでは表せない高彩度の値はどうなの?
RGBにマイナスを許せば大丈夫?
通常RGBにマイナスを入れるとレンダリング計算に破たんが起きるが、DisplaySpaceでマイナスなだけで、レンダリング空間ではマイナスになっていないので問題ないと思われたが....
バグがありそう
sRGBの色域外のxy座標(0.1,0.7)を例にする。
明度Y=0.5とした場合。xyY(0.1,0.7,0.5) は XYZに変換するとXYZ(0.0714,0.5,0.1429) となり、sRGB(-0.803,0.943,0.255)となる。8bitで表すと(-205,240,65)となるはず
Rチャンネルの値が大きく違う。
他にも調べたがマイナスになるチャンネルがすべて変な値になっていることがわかった。
明度Y=0.5とした場合。xyY(0.1,0.7,0.5) は XYZに変換するとXYZ(0.0714,0.5,0.1429) となり、sRGB(-0.803,0.943,0.255)となる。8bitで表すと(-205,240,65)となるはず
Rチャンネルの値が大きく違う。
他にも調べたがマイナスになるチャンネルがすべて変な値になっていることがわかった。
現状では表示色空間で色域外を指定すると正しいレンダリング空間に変換してくれない。
表示領域外の値はレンダリング空間で値を直接指定するしか方法はない。
表示領域外の値はレンダリング空間で値を直接指定するしか方法はない。
0 件のコメント:
コメントを投稿