メニュー

unity3 dの重要なプログラムである着色器プログラミング

ソース: インターネット
時間: 2017-11-09

周知のように,unity3 dのすべてのものがすべて着色器を持つことができないのであれば,シェアラーである。入力を担当するmeshだけが、指定された方法や入力のスタンプや色などの組み合わせを担当して出力されます。描画手段は、この出力に応じて画像を画面上に描画することができる。入力された贴り付けや色などに対応するshaderと、shaderの特定のパラメータを设定して、これらのコンテンツを梱包して、得られるのがmaterial。その后、私达は材料を适切なrendererに与えることができます。最后のshaderとは、入力色の贴り付けと出力器が分かるポイントと色を出力するためのプログラムである。

一、Shader种类

Shaderは大体3種類に分けられています:

1、Surface Shader——表面着色器

光の照射を含めて3 dのシーンです

2、Vertex and Fragment Shader ——の頂点/フラグメント着色器。

照明の演算、2 dシーン、特効

3、Fixed Function Shader ——固定関数着色器。

おすすめしないUnity3D渲染的重要编程——着色器编程      頂点/スライス着色器。

二、Shader基本的構造

先に新筑したものをテキスト・エディタで开くShader:Unity3D渲染的重要编程——着色器编程 Unity3D渲染的重要编程——着色器编程

属性Properties{}

例:_Name(“Display Name”, type) = defaultValue[{options}]

_Name:変数名

Display Name:名を表示する

type:タイプは次の通りUnity3D渲染的重要编程——着色器编程

defaultValue:デフォルト値はタイプに対応している。

Unity3D渲染的重要编程——着色器编程  

options:オプション

2D / Rect / Cube – 2 D / Rect / Cube - OpenglのTexgenのモードで、少なくとも{}

例:

1つのデフォルト値は半透明の青色の色を定義する。Main Color _MainColor (“Main Color”, Color) = (0, 0, 1, 0.5)

1つのデフォルト値は純白のテクスチャを定義するMain Texture _MainTex (“Main Texture”, 2D) = “white” {}

 

子着色器SubShader

1、Tagsラベル

Tags { 'TagName1' = 'Value1' 'TagName2' = 'Value2' }

効果:「いつ」「どのように?」を「どのように」するのか?

類型を際立たせる:

Tags { “RenderType”=“Opaque” }  //出力の非透明な物体をレンダリングする

Tags { “RenderType”=“Transparent” } //レンダリングされるのは透明な物体である

順次行列:

Tags { “Queue” = “Transparent” } //透明な物体をレンダリングするための順序キューを指定する

2、細部レベルLOD

LOD: Level of Detail

数字が大きいほど詳細は高くなり、消費は大きくなります

“LOD 100”非常に低い値で、Vertexlit(頂点光)ShaderのLOD値と同じである。

3、CGPROGRAM…ENDCG

マークCG

言語を実現するMicrosoft 的HLSL 言语(大部分とNVIDIA のCG言葉が同じ)

4、#pragma

作用:shader関数の翻訳を指示する

#pragma vertex vert //関数名vert 的Vertex Shader

#pragma fragment frag //関数名fragFragment Shader

5、sampler2D

sampler2D テクスチャと結びつけたデータ容器インタフェースである,をCG/HLSL うち2Dスタンプのタイプ

それに相応するsampler1D、sampler3D、samplerCUBE などの様式

なお、CGプログラムは、属性(properties)の変数を必要とするので、CGプログラムにおける変数は、以前の変数と同じ名前で使用されるべきである。

6、include

作用:Unityを導入することは,Shaderの定義の変数及び関数のファイルを導入する

#include “UnityCG.cginc” //导入Unity 通用CGあらかじめファイルを定義する

7、appdataとv2f

appdata : 入力するVertex Shader データ

v2f :からVertex Shader出力、入力Fragment Shader データ

“float4”4次元浮動小数点数ベクトルを定義し,浮動点数の精度を高める32-bit

“: POSITION“はShaderパラメータの「語義」は、これをVertexの空間座標とする

“SV_POSITION”描写Vertexピクセルの位置

8、vertとfrag

UnityObjectToClipPos() //Vertexの対象空間をビデオカメラのカットスペース(スクリーン2D座標)に変換する

“fixed4”1つの4次元浮動小数点数ベクトルを定義し,浮点数の精度は11-ビットであり,規格ではマイナス2.0から+2.0に達する。

“SV_Target”記述画素pixel → Color

“return fixed4(1,0,0,1)”最後のfragが戻ってきたのは、純粋な赤色の画素だった    


関連コンテンツ
Copyright 2017-2020 犀牛云提供企业云服务