強火で進め

このブログではプログラム関連の記事を中心に書いてます。

ポリゴンを作成すると絵が出て来るコンテンツを作成

前回のポリゴンを作成するだけだとちょっと寂しいのでもうちょっと手を加えて画面をポリゴンで埋めると絵が出て来るコンテンツを作ってみました。

実装としてはスクリーン座標を元にしたテクスチャ描画のシェーダを作っただけです。他の部分は前回のものと同じです。

シェーダは一から作るのは大変だったのでこちらのドキュメントに記載されているものをベースに改造しました。

サーフェイスシェーダの例 / Surface Shader Examples
http://docs-jp.unity3d.com/Documentation/Components/SL-SurfaceShaderExamples.html

最終的にはこんなシェーダになりました。

Shader "Example/ScreenPos" {
	Properties {
		_MainTex ("Texture", 2D) = "white" { }
	}
	SubShader {
		Tags { "RenderType" = "Opaque" "LightMode" = "Vertex" }
		CGPROGRAM
		#pragma surface surf Lambert
		struct Input {
			float2 uv_MainTex;
			float4 screenPos;
		};
		sampler2D _MainTex;
		void surf (Input IN, inout SurfaceOutput o) {
			float2 screenUV = IN.screenPos.xy / IN.screenPos.w*0.5;
			screenUV *= float2(2.0,1.5);
			o.Albedo = tex2D (_MainTex, screenUV).rgb;
		}
		ENDCG
	} 
	Fallback "Diffuse"
}

プロジェクトファイルはこちらからダウンロード出来ます。