[譯]Unity – Accessing shader properties in Cg

原文:Accessing shader properties in Cg

Shader 會在 Properties 區塊宣告他的 properties。如果你想要在Cg shader program裡面去存取他們,你需要額外宣告一個相同名稱以及對應的 type 的 Cg 變數。在Shader Tutorial: Vertex and Fragment Programs範例裡面有提到。

例如這些 shader 的 properties:

_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 code裡面宣告如下:

float4 _MyColor;
float4 _MyVector;
float _MyFloat;
sampler2D _MyTexture;
samplerCUBE _MyCubemap;

Cg也允許使用關鍵字"uniform“,但這並非必要的:

uniform float4 _MyColor;

在ShaderLab裡面,Property是用以下幾種方式對應到Cg的變數type:

  • Color 和 Vector properties 會對應到 float4
  • Range 和 Float properties 會對應到 float
  • Texture properties 會對應到 sampler2D 給一般的(2D)Texture。
  • CUBE 和 RECT textures 會分別對應到 samplerCUBEsamplerRECT

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / 變更 )

Twitter picture

You are commenting using your Twitter account. Log Out / 變更 )

Facebook照片

You are commenting using your Facebook account. Log Out / 變更 )

Google+ photo

You are commenting using your Google+ account. Log Out / 變更 )

連結到 %s