初期のドラ●エみたいな昔のゲームだと、容量削減のためにパレット色変換で同じ元絵から、色違いのキャラ画像出したりしてましたよね。あれの発展形で、R,G,Bの三原色の明暗を維持しつつ、違う色に置き換えるシェーダーを書いてみました。下図は色変換のイメージです(変更後の色はサンプル画像のものとは異なります)。通常このような色置換はパレット指定でやると思うんですが、このシェーダーのメリットはパレット管理しなくてよいこと。3色シェーダーに設定するだけで同系色の明暗グラデーション置換ができるし、一度覚えて貰えばデザイナーさんに描いてもらう場合のやりとりも楽です。デメリットとしてはパレット置換に比べると色相の異なる4色以上の変換ができないので自由度が減る場合がありますが、現実的には3系統の明暗グラデーション置換ができれば事足りる場合がほとんどだと思います。任意のカラーへ、元の明度に比例した明度で置換するわけです。}ここだけで以下の変換を全て行っていることになります。変化なし!シェーダーで使用している計算式は、(私が知らないだけでどこかの偉い人が発明済みかもしれませんが)自力で捻りだしたものですので参考資料とかはありません。算出方法を何とか捻りだそうと試行錯誤していて、偶然見つけたようなものです。そんな経緯なので、直感的にわかりやすい説明はなく、なぜこれでいいのか後付けで証明してみました。一応、以下に詳しく解説しますが、自分でも眠くなりそうな長い説明なんで、興味のない方は読み飛ばしてください。うち少なくとも二つが0である条件を求めるためのものです。うち二つ以上が0であれば両辺共に0になってこれは成り立ちません。うち少なくとも二つ以上が0でない場合ですが、一つだけ0がある場合はすぐおわかりでしょう。いずれも1以下であることから必ず成り立ちつことがわかります。