Хорошо, я новичок в skyboxes, и у меня есть некоторые проблемы, пытаясь достичь облака градиента RADIAL. У меня есть радиальный градиентный шейдер, однако, когда я помещаю это как skybox, часть, которая интерполирует между двумя цветами, слишком сильно масштабируется, а это означает, что вы не можете вообще сказать свой градиент.Как сделать радиальный градиент skybox в Unity?
Я думаю, что это потому, что его Шейдер это еще не означало для скайбоксов. Затем я нашел шейдер для линейного градиента skybox, который работает как линейный градиент, но мне нужно, чтобы он был радиальным, как из центрального цвета наружу.
Ive выглядел повсюду, но не мог найти радиальный градиент SKYBOX-шейдера. Мой вопрос: как можно превратить линейный градиентный шейдер в радиальный для skybox? Или как я могу сделать свой существующий радиальный градиент для skyboxes?
Я не пишу это, но это код для линейного градиента скайбоксе:
Shader "Custom/Horizontal Skybox"
{
Properties
{
_Color1 ("Top Color", Color) = (1, 1, 1, 0)
_Color2 ("Horizon Color", Color) = (1, 1, 1, 0)
_Color3 ("Bottom Color", Color) = (1, 1, 1, 0)
_Exponent1 ("Exponent Factor for Top Half", Float) = 1.0
_Exponent2 ("Exponent Factor for Bottom Half", Float) = 1.0
_Intensity ("Intensity Amplifier", Float) = 1.0
}
CGINCLUDE
#include "UnityCG.cginc"
struct appdata
{
float4 position : POSITION;
float3 texcoord : TEXCOORD0;
};
struct v2f
{
float4 position : SV_POSITION;
float3 texcoord : TEXCOORD0;
};
half4 _Color1;
half4 _Color2;
half4 _Color3;
half _Intensity;
half _Exponent1;
half _Exponent2;
v2f vert (appdata v)
{
v2f o;
o.position = mul (UNITY_MATRIX_MVP, v.position);
o.texcoord = v.texcoord;
return o;
}
half4 frag (v2f i) : COLOR
{
float p = normalize (i.texcoord).y;
float p1 = 1.0f - pow (min (1.0f, 1.0f - p), _Exponent1);
float p3 = 1.0f - pow (min (1.0f, 1.0f + p), _Exponent2);
float p2 = 1.0f - p1 - p3;
return (_Color1 * p1 + _Color2 * p2 + _Color3 * p3) * _Intensity;
}
ENDCG
SubShader
{
Tags { "RenderType"="Background" "Queue"="Background" }
Pass
{
ZWrite Off
Cull Off
Fog { Mode Off }
CGPROGRAM
#pragma fragmentoption ARB_precision_hint_fastest
#pragma vertex vert
#pragma fragment frag
ENDCG
}
}
}
Как это -
Вы должны объяснить, внешний вид вы собираетесь. Вы хотите, чтобы каждая сторона skybox имела радиальный градиент? Или вы просто хотите небо с одним радиальным градиентом, который всегда находится в одном и том же месте? – Soviut
Непослушный пример в моем вопросе - просто радиальный, который остается в одном и том же месте – skyguy