質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.51%

  • C#

    9062questions

    C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

  • Unity

    5521questions

    Unityは、ユニティテクノロジーが開発したゲームエンジンです。 主にモバイルやブラウザ向けのゲーム製作に利用されていましたが、3Dの重力付きゲームが簡単に作成できることから需要が増え、現在はマルチプラットフォームに対応しています。 言語はC言語/C++で書かれていますが、C#、JavaScript、Booで書かれたコードにも対応しています。

  • Unity3D

    1810questions

    Unity3Dは、ゲームや対話式の3Dアプリケーション、トレーニングシュミレーション、そして医学的・建築学的な技術を可視化する、商業用の開発プラットフォームです。

SkyboxのCubemapのShaderが欲しい

解決済

回答 1

投稿

  • 評価
  • クリップ 0
  • VIEW 105

Harumaro

score 8

Unityにある、Skybox/Cubemapのシェーダーは公開されているのでしょうか?6 Sidedなどは調べたら出てきたのですが...

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

+1

Unity ダウンロード アーカイブからビルトインシェーダーを入手し、その「DefaultResourcesExtra」フォルダの中の「Skybox-Cubed.shader」が目的のファイルかと思います。
2019.1.2f1版の内容は下記のようになっていました。

// Unity built-in shader source. Copyright (c) 2016 Unity Technologies. MIT license (see license.txt)

Shader "Skybox/Cubemap" {
Properties {
    _Tint ("Tint Color", Color) = (.5, .5, .5, .5)
    [Gamma] _Exposure ("Exposure", Range(0, 8)) = 1.0
    _Rotation ("Rotation", Range(0, 360)) = 0
    [NoScaleOffset] _Tex ("Cubemap   (HDR)", Cube) = "grey" {}
}

SubShader {
    Tags { "Queue"="Background" "RenderType"="Background" "PreviewType"="Skybox" }
    Cull Off ZWrite Off

    Pass {

        CGPROGRAM
        #pragma vertex vert
        #pragma fragment frag
        #pragma target 2.0

        #include "UnityCG.cginc"

        samplerCUBE _Tex;
        half4 _Tex_HDR;
        half4 _Tint;
        half _Exposure;
        float _Rotation;

        float3 RotateAroundYInDegrees (float3 vertex, float degrees)
        {
            float alpha = degrees * UNITY_PI / 180.0;
            float sina, cosa;
            sincos(alpha, sina, cosa);
            float2x2 m = float2x2(cosa, -sina, sina, cosa);
            return float3(mul(m, vertex.xz), vertex.y).xzy;
        }

        struct appdata_t {
            float4 vertex : POSITION;
            UNITY_VERTEX_INPUT_INSTANCE_ID
        };

        struct v2f {
            float4 vertex : SV_POSITION;
            float3 texcoord : TEXCOORD0;
            UNITY_VERTEX_OUTPUT_STEREO
        };

        v2f vert (appdata_t v)
        {
            v2f o;
            UNITY_SETUP_INSTANCE_ID(v);
            UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(o);
            float3 rotated = RotateAroundYInDegrees(v.vertex, _Rotation);
            o.vertex = UnityObjectToClipPos(rotated);
            o.texcoord = v.vertex.xyz;
            return o;
        }

        fixed4 frag (v2f i) : SV_Target
        {
            half4 tex = texCUBE (_Tex, i.texcoord);
            half3 c = DecodeHDR (tex, _Tex_HDR);
            c = c * _Tint.rgb * unity_ColorSpaceDouble.rgb;
            c *= _Exposure;
            return half4(c, 1);
        }
        ENDCG
    }
}


Fallback Off

}

ZXY順オイラー角回転

// Unity built-in shader source. Copyright (c) 2016 Unity Technologies. MIT license (see license.txt)

Shader "Skybox/Cubemap (3-Axis Rotation)" {
Properties {
    _Tint ("Tint Color", Color) = (.5, .5, .5, .5)
    [Gamma] _Exposure ("Exposure", Range(0, 8)) = 1.0

    // 回転プロパティをX、Y、Zの3つに増やす
    _RotationX ("Rotation X", Range(0, 360)) = 0
    _RotationY ("Rotation Y", Range(0, 360)) = 0
    _RotationZ ("Rotation Z", Range(0, 360)) = 0

    [NoScaleOffset] _Tex ("Cubemap   (HDR)", Cube) = "grey" {}
}

SubShader {
    Tags { "Queue"="Background" "RenderType"="Background" "PreviewType"="Skybox" }
    Cull Off ZWrite Off

    Pass {

        CGPROGRAM
        #pragma vertex vert
        #pragma fragment frag
        #pragma target 2.0

        #include "UnityCG.cginc"

        samplerCUBE _Tex;
        half4 _Tex_HDR;
        half4 _Tint;
        half _Exposure;

        // プロパティに合わせて回転角変数も3つに増やす
        float _RotationX;
        float _RotationY;
        float _RotationZ;

        // 回転用関数の名前を変更、引数をfloatからfloat3に変更
        float3 RotateAroundZXYInDegrees (float3 vertex, float3 degrees)
        {
            // サイン、コサインも3成分についてそれぞれ算出し...
            float3 alpha = degrees * UNITY_PI / 180.0;
            float3 sina, cosa;
            sincos(alpha, sina, cosa);

            // 各軸周りの回転行列を作成し...
            float3x3 rx = float3x3(
                    1.0,     0.0,     0.0,
                    0.0,  cosa.x, -sina.x,
                    0.0,  sina.x,  cosa.x);
            float3x3 ry = float3x3(
                 cosa.y,     0.0,  sina.y,
                    0.0,     1.0,     0.0,
                -sina.y,     0.0,  cosa.y);
            float3x3 rz = float3x3(
                 cosa.z, -sina.z,     0.0,
                 sina.z,  cosa.z,     0.0,
                    0.0,     0.0,     1.0);

            // Z軸、X軸、Y軸の順で回転を合成し...
            float3x3 m = mul(ry, mul(rx, rz));

            // 回転を適用して返す
            return mul(m, vertex);
        }

        struct appdata_t {
            float4 vertex : POSITION;
            UNITY_VERTEX_INPUT_INSTANCE_ID
        };

        struct v2f {
            float4 vertex : SV_POSITION;
            float3 texcoord : TEXCOORD0;
            UNITY_VERTEX_OUTPUT_STEREO
        };

        v2f vert (appdata_t v)
        {
            v2f o;
            UNITY_SETUP_INSTANCE_ID(v);
            UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(o);

            // 回転関数にX、Y、Z回転角を与える
            float3 rotated = RotateAroundZXYInDegrees(v.vertex, float3(_RotationX, _RotationY, _RotationZ));

            o.vertex = UnityObjectToClipPos(rotated);
            o.texcoord = v.vertex.xyz;
            return o;
        }

        fixed4 frag (v2f i) : SV_Target
        {
            half4 tex = texCUBE (_Tex, i.texcoord);
            half3 c = DecodeHDR (tex, _Tex_HDR);
            c = c * _Tint.rgb * unity_ColorSpaceDouble.rgb;
            c *= _Exposure;
            return half4(c, 1);
        }
        ENDCG
    }
}


Fallback Off

}

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2019/05/15 09:09

    毎度毎度お世話になりますwありがとうございますw

    キャンセル

  • 2019/05/15 10:43

    個人的に連絡を取ることって可能でしょうか?まだ聞きたいことがあって...

    キャンセル

  • 2019/05/15 18:01

    なるほど...不特定多数の目に入るとまずいご質問でしょうか?
    私としましては、できればTeratail上で完結する形の方がうれしいのですが(何か知ってはいけないとんでもない情報が入っていたらどうしよう...なんてちょっと不安になってしまいまして)、公開したくない部分の削除やスクリーンショットの黒塗りなどでは隠蔽できないでしょうか。
    なるべくそのような方向でお願いしたいところではありますが、どうしても無理そうでしたら対応いたします。もしその場合でも、私も一応見ず知らずの輩の一人ではありますので、くれぐれも本当に見られて困るものは含まれないようご注意願います。あいにく今は公衆の場に晒せるような連絡先を持っていませんので、何か即席のメールアカウントを用意しようかと思います。また、Unityのプロジェクトファイルのような大きめのものはメール添付ではなく別のアップローダーを使用した方がいいかもしれません。

    キャンセル

  • 2019/05/15 20:32

    ご回答ありがとうございます。無理な質問を言ってしまい申し訳ありません...Unityについてのしょうもない質問をいちいちteratailで質問するのが申し訳なくなってきてしまいまして...(それほど重大な情報交換が必要になるというわけではないのでご安心ください)もちろんBongoさんが難しいということであれば回答依頼という形を取らせていただきます。

    キャンセル

  • 2019/05/16 05:44

    いえいえ、そういった理由でしたらむしろTeratailに投稿して大勢の方に見ていただいたほうがいいと思いますよ。
    所詮私一人ではお答えできる範囲にも限界がありますが、投稿として公開されていれば別の方からご回答いただけることも多いでしょう。回答にミス・見落としがあってもさらに別の方からご指摘をいただけたり、別の解決方法が寄せられることもあって利点が大きいと思います。

    ご質問内容のレベルをお気になさっている様子ですが、ご自身でしょうもないと見えるようなものでも、背後に根深い難問が隠れていることもちょくちょくあるように思います。
    Teratail内の投稿を見てみますと辛辣なコメントのついているものもしばしば見かけますが、そういったものはたいていご自身での調査があまりにも不足していたり、プログラミング自体との関係が薄い謎の人生相談だったりすることが多いようです。質問するときのヒント (https://teratail.com/help/question-tips )にある事項をおおよそ満足していればそうそうマイナス評価がつくことはないだろうと思いますので、ぜひ積極的に質問投稿してみてください。

    キャンセル

  • 2019/05/16 07:48

    了解しました!丁寧なお返事ありがとうございます!
    大変恐縮なのですが、ここの質問欄の延長線上として、もう一つだけ質問をさせてください!

    キャンセル

  • 2019/05/16 07:51

    このCubemapのシェーダーにXYZ軸の回転プロパティをつけたいと思い、自分なりにかなり頑張ったのですが、どうしても上手く行きません...どうかこのシェーダーに回転プロパティをつけていただきたいのですが...
    可能でしょうか?

    キャンセル

  • 2019/05/16 10:30

    以前の星空シェーダーの件では任意軸周り回転を採用しましたが、今回は3軸オイラー角回転の方がいいでしょうかね?
    改造案を検討してみましたがいかがでしょうか。回転プロパティ名が「_Rotation」から「_RotationX」「_RotationY」「_RotationZ」に変わりましたので、スクリプトから回すときには新しいプロパティ名でアクセスする必要があります。

    キャンセル

  • 2019/05/16 17:23

    全然OKです!ありがとうございました!

    キャンセル

同じタグがついた質問を見る

  • C#

    9062questions

    C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

  • Unity

    5521questions

    Unityは、ユニティテクノロジーが開発したゲームエンジンです。 主にモバイルやブラウザ向けのゲーム製作に利用されていましたが、3Dの重力付きゲームが簡単に作成できることから需要が増え、現在はマルチプラットフォームに対応しています。 言語はC言語/C++で書かれていますが、C#、JavaScript、Booで書かれたコードにも対応しています。

  • Unity3D

    1810questions

    Unity3Dは、ゲームや対話式の3Dアプリケーション、トレーニングシュミレーション、そして医学的・建築学的な技術を可視化する、商業用の開発プラットフォームです。

閲覧数の多いC#の質問