좋아, 나는 스카이 박스를 처음 사용하고 RADIAL 그라디언트 스카이 박스를 만들기 위해 몇 가지 문제를 겪고있다. 방사형 그래디언트 쉐이더가 있는데, 스카이 박스로 넣을 때 두 색상을 보간하는 부분이 너무 확대되어있어 실제로는 그레디언트를 전혀 말할 수 없습니다.Unity에서 방사형 그래디언트 스카이 박스 만드는 법은 무엇입니까?
나는 그 셰이더 그게 전부는 스카이 박스에 대한 의미하지 때문이라고 생각합니다. 그런 다음 선형 그래디언트로 작동하는 선형 그래디언트 스카이 박스의 쉐이더를 찾았지 만 중심 색상 바깥 쪽과 같이 방사형이되어야합니다.
Ive는 도처에서 보았지만 방사형 그라디언트 SKYBOX 셰이더를 찾을 수 없습니다. 내 질문은 - 어떻게 skybox에 대한 선형 그라디언트 쉐이더를 방사형으로 바꿀 수 있습니까? 또는 기존의 방사형 그래디언트를 스카이 박스에 적용하려면 어떻게해야합니까?
나는 이것을 기록하지 못했지만,이 선형 그라데이션 스카이 박스의 코드입니다 : 이것처럼
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
}
}
}
-
당신은 당신이 가고있는 모습을 설명 할 필요가있다. 스카이 박스의 각면에 방사형 그래디언트를 적용 하시겠습니까? 아니면 항상 동일한 장소에있는 단일 방사형 그래디언트가있는 하늘을 원하십니까? – Soviut
내 질문에 - 예를 들어, 그냥 같은 장소에 유지 방사형 – skyguy