1. Tanutan93337836

    Posted

    Tanutan93337836
Changes in title
+シェーダーの練習でパーティーボールもどきを作った
Changes in tags
Changes in body
Source | HTML | Preview
@@ -0,0 +1,47 @@
+パーティボールもどきをサーフェースシェーダーで書いてみた(もどきですらないけど)
+コードは以下。
+
+ Properties{
+ _Diffuse("Diffuse Color", color) = (0, 0, 0, 1)
+ _EmissionColor("Emission Color", color) = (1, 1, 1, 1)
+ }
+
+ SubShader{
+
+ Tags {"RenderType" = "Opaque"}
+
+ CGPROGRAM
+ #pragma surface surf Lambert finalcolor:outemission vertex:yaxis
+
+ struct Input {
+
+ float customData_1;
+ float customData_2;
+ };
+
+ float4 _Diffuse;
+ float4 _EmissionColor;
+
+ void yaxis(inout appdata_full v, out Input data) {
+
+ UNITY_INITIALIZE_OUTPUT(Input, data);
+ data.customData_1 = max(0, 0.5 * sin((v.vertex.y + _Time.x * 5) * 3.14159 * 8));
+ data.customData_2 = max(0, 0.5 * sin((v.vertex.x + _Time.x * 5) * 3.14159 * 8));
+ }
+
+ void outemission(Input IN, SurfaceOutput o, inout fixed4 color) {
+ color += (_EmissionColor * IN.customData_1 + _EmissionColor * IN.customData_2);
+ }
+
+ void surf(Input IN, inout SurfaceOutput o) {
+ o.Albedo = _Diffuse;
+ }
+ ENDCG
+ }
+ FallBack "Diffuse"
+
+実行時はこんな感じ。
+![スクリーンショット (3).png](https://qiita-image-store.s3.amazonaws.com/0/192240/47198f66-44a3-2585-ace6-22f28f78a777.png)
+
+このクロスした白線が時間に応じて動く感じです。サーフェースシェーダーのモディファイヤーを使って、アウトプットを加工してます。
+個人的に、引数に戻り値を定義するところあたり、どうにも不快感があります。