見た目を簡単に変更できる?Unityシェーダーの基礎を徹底解説!

最近Unityを学び始めたという方は徐々にUnityにも慣れてきたでしょうか?

今日は、Unity上で簡単に色合いや見た目を変更することが出来るShader(シェーダー)」の基礎的内容について解説します!

シェーダーについて

そもそもシェーダーって何?

そもそも、シェーダーとはなんでしょうか。

シェーダーshader)とは、3次元コンピュータグラフィックスにおいて、シェーディング(陰影処理)を行うコンピュータプログラムのこと。「shade」とは「次第に変化させる」「陰影・グラデーションを付ける」という意味で、「shader」は頂点色やピクセル色などを次々に変化させるもの(より具体的に、狭義の意味で言えば関数)を意味する。(出典: Wikipedia)

少し難しいかもしれませんが、簡単に言うと、コンピューターグラフィックを使って描画を行うときに、陰影やグラデーションをつけることで、物体をより立体的に、リアルに見せる技術のことです。

シェーダーは、大きく分けて以下の三つの種類があります。

  1. サーフェイスシェーダー
  2. 頂点シェーダー
  3. フラグメントシェーダー

今回はあくまで名前だけの紹介にとどめておきます。より詳しく知りたい方は、Unityリファレンスをご覧ください。

どんなことができるの?

シェーダーは、見た目の表現方法をUnity上で簡単に操作できる優れものです。

物体を透明にしたり、光の当て方を指定することにより、よりリアルな表現をしたりなど、多様な表現が出来るようになります

少し理解しにくい部分もありますが、概念をある程度理解できたら簡単なので、やっていきましょう。

シェーダーを使ってみよう

Shader(シェーダー)の基礎的内容に触れたところで、今度は実際にUnity上で触ってみましょう。

プロジェクトを作成しよう

まずはいつものようにプロジェクトを作成しましょう。

プロジェクトの名前は特に指定はありません。自分がわかりやすい名前にしましょう。ここでは「shaderSample」とします。

今回は3Dのプロジェクトを選択しましょう。

シェーダーを作成

プロジェクトを作成したら、早速シェーダーを作成しましょう。

Projectビューから、「Create→Shader→Standard Surface Shader」を選択します。名前は「sample」とします。

シェーダーを作成すると同時に、シェーダーをセットするマテリアルも作成しましょう。

マテリアルは、「Create→Material」で作成できます。名前は「sampleMaterial」としましょう。

 

ポイント
UnityでShader(シェーダー)を扱う際には、ShaderとMaterialがどちらも必要になるので、この2つをセットで使うことを覚えておきましょう。

シェーダーのスクリプトについて

Shader(シェーダー)の作成が完了したところで、続いてはシェーダーのスクリプトについて説明します。

シェーダーのスクリプトを見てみよう

下準備が整ったところで、シェーダーのスクリプトを細かく見てみましょう。

 

シェーダーのスクリプトは「ShaderLab」と呼ばれており、この中身を書いていくことにより、多様な種類の描画をUnity上で行うことができます。

スクリプトの中身は以下の二つで構成されています。

Properties

カラーやテクスチャなどを設定しますここに書かれた値は、インスペクタからも編集できるようになります。また、スライダーなどの設定もできます。

SubShader

ここにシェーダーの本体の記述をしていきます。複雑なので細かい説明は割愛して、実際にシェーダーを使って色の変更を行っていきます。

シェーダーを使って色を変更してみよう

スクリプトの内容に触れたところで、スクリプトに少しだけ変化を加えてみます。

シェーダーのスクリプトを変更してみよう

それでは実際にシェーダーのスクリプトを書いていきます。今回変更するのは以下のsurf関数です。

この文を以下のように変更してください。

o.Albedoの部分を変更しました。この部分はShaderの基本的な色となる部分で、ここを設定するとインスペクタから色を変更しようとしても変えられません。

実際に貼り付けてみよう

それでは実際にUnity上のobjectにアタッチしてみましょう。

今回は球体であるSphereを使います。「create→3D Object→Sphere」を選択し、Sphereを作成しましょう。

Sphereを作成したら、MaterialにShaderを設定しましょう。

Materialを選択し、インスペクタの上部にあるShaderの部分を変更します。「custom→sample」を選択しましょう。

そして、MaterialをSphereに紐づけます。Sphereを選択し、インスペクタのMesh Rendererの所にあるMaterialsのエレメントをクリックし、sampleMaterialを選択します。

 

すると、sphereの色が変更されたことが分かります。

インスペクタの値を操作してみよう !

オブジェクトの色は変更できましたが、「シェーダーを使わずに色を変更したのとあまり変わらない…」と思った方もいるでしょう。しかし、ここからがシェーダーの真骨頂です

GIFのように、インスペクタのSmoothnessとMetalicのスライダーを変更してみましょう。

すると、シェーダーの描画が様々に変更しているのが分かります

Smoothnessは光の反射具合を設定するパラメータ、Metalicは、表面に金属感を出すパラメータです。これらの値を設定することで、幅広い表現ができるようになるのです!

 

まとめ

いかがでしたでしょうか?今回はShaderの基礎的な内容について紹介しました。

shaderを使えば、見た目上の演出でこのほかにも多様な表現が出来るようになり、ゲームの世界観の幅が大きく広がります

ぜひ色々試してみてください!

 

オススメアプリ!渋谷で気軽に友達を作れるアプリが登場!