頂点とフラグメントシェーダの例
頂点プログラムへ頂点データの流し込み

Cgでのシェーダプロパティ参照

ShaderはマテリアルプロパティをProperties ブロックで宣言します。もしshaderプログラムでアクセスしたい場合, Cg/HLSL変数を同じ名前とマッチングするタイプで宣言する必要があります。例についてはシェーダ: 頂点およびフラグメント プログラムを参照下さい。

例えば次のシェーダプロパティ

_MyColor ("Some Color", Color) = (1,1,1,1) 
_MyVector ("Some Vector", Vector) = (0,0,0,0) 
_MyFloat ("My float", Float) = 0.5 
_MyTexture ("Texture", 2D) = "white" {} 
_MyCubemap ("Cubemap", CUBE) = "" {} 

について,Cg/HLSLで参照するために宣言するコードは:

fixed4 _MyColor; // low precision type is enough for colors
float4 _MyVector;
float _MyFloat; 
sampler2D _MyTexture;
samplerCUBE _MyCubemap;

Cgはuniformキーワードを記述できますが,必須ではありません:

uniform float4 _MyColor;

ShaderLabのプロパティタイプはCg/HLSL変数タイプとの対応は次のようにマッピングされます:

  • ColorとVectorプロパティは,float4,half4あるいはfixed4変数に対応
  • RangeとFloatプロパティは,float,halfあるいはfixed変数に対応
  • Textureプロパティは,通常(2D)のテクスチャの場合はsampler2D変数に対応,3Dテクスチャの場合はsampler3D変数に対応
頂点とフラグメントシェーダの例
頂点プログラムへ頂点データの流し込み