SkyBox на свой меш

Общие вопросы о Unity3D

SkyBox на свой меш

Сообщение Lay4ik 15 ноя 2013, 10:06

Есть желание натянуть cubemap на свою сферу. Если использовать SkyboxCubemap шейдер, то на сферу или на куб она как-то неправильно натягивается. При этом если кинуть этот же материал в RenderSetting на skybox то все отлично отрисовывается. Может кто встречался с этой проблемой и подскажет?
Lay4ik
UNец
 
Сообщения: 16
Зарегистрирован: 02 апр 2013, 11:40

Re: SkyBox на свой меш

Сообщение Левш@ 15 ноя 2013, 15:52

Может надо развертку правильно сделать.
_X.cor.R (Prologue)
Аватара пользователя
Левш@
Адепт
 
Сообщения: 4073
Зарегистрирован: 14 окт 2009, 16:34
Откуда: IBERIA
Skype: bars_levsha
  • Сайт

Re: SkyBox на свой меш

Сообщение Lay4ik 15 ноя 2013, 20:41

а что она должна из себя представлять? обычную развертку в uv координатах? не прокатит потому что cubemap использует 3 текстурные координаты. а как развернуть куб или (даже страшно подумать) сферу на 3 координаты кто-нить подскажет?
Lay4ik
UNец
 
Сообщения: 16
Зарегистрирован: 02 апр 2013, 11:40

Re: SkyBox на свой меш

Сообщение waruiyume 15 ноя 2013, 21:01

Синтаксис:
Используется glsl
Shader "RenderFX/Skybox Cubed" {
Properties {
        _Tint ("Tint Color", Color) = (.5, .5, .5, .5)
        _Tex ("Cubemap", Cube) = "white" {}
}

SubShader {
        Tags { "Queue"="Background" "RenderType"="Background" }
        Cull Off ZWrite Off Fog { Mode Off }

        Pass {
               
                CGPROGRAM
                #pragma vertex vert
                #pragma fragment frag
                #pragma fragmentoption ARB_precision_hint_fastest

                #include "UnityCG.cginc"

                samplerCUBE _Tex;
                fixed4 _Tint;
               
                struct appdata_t {
                        float4 vertex : POSITION;
                        //float3 texcoord : TEXCOORD0;
                };

                struct v2f {
                        float4 vertex : POSITION;
                        float3 texcoord : TEXCOORD0;
                };

                v2f vert (appdata_t v)
                {
                        v2f o;
                        o.vertex = mul(UNITY_MATRIX_MVP, v.vertex);
                        //o.texcoord = v.texcoord;
                        o.texcoord = -WorldSpaceViewDir(v.vertex);
                        return o;
                }

                fixed4 frag (v2f i) : COLOR
                {
                        fixed4 tex = texCUBE (_Tex, i.texcoord);
                        fixed4 col;
                        col.rgb = tex.rgb + _Tint.rgb - unity_ColorSpaceGrey;
                        col.a = tex.a * _Tint.a;
                        return col;
                }
                ENDCG
        }
}      

Fallback Off

}

 
Аватара пользователя
waruiyume
Адепт
 
Сообщения: 6143
Зарегистрирован: 30 окт 2010, 05:03
Откуда: Ростов на Дону

Re: SkyBox на свой меш

Сообщение Lay4ik 21 ноя 2013, 09:42

Спасибо большое. Работает. Правда теперь возникла другая проблема -- если теперь вращать сферу на которой висит этот материал, то текстура остается на месте, т.е. не вращается вместе со сферой(( Поэтому возникает вопрос -- как бы ее повращать?
Lay4ik
UNец
 
Сообщения: 16
Зарегистрирован: 02 апр 2013, 11:40

Re: SkyBox на свой меш

Сообщение waruiyume 21 ноя 2013, 09:58

ObjSpaceViewDir вместо WorldSpaceViewDir.
Аватара пользователя
waruiyume
Адепт
 
Сообщения: 6143
Зарегистрирован: 30 окт 2010, 05:03
Откуда: Ростов на Дону

Re: SkyBox на свой меш

Сообщение Lay4ik 21 ноя 2013, 12:37

Огромнейшее спасибо
Lay4ik
UNец
 
Сообщения: 16
Зарегистрирован: 02 апр 2013, 11:40


Вернуться в Общие вопросы

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 8