Godot ๋ฒ์ :
3.0.2 ๋ชจ๋
ธ
๋ฒ์ ์ ํฌํจํ OS / ์ฅ์น :
KDE ๋ค์จ
GTX 1060
๋ฌธ์ ์ค๋ช
:
์
ฐ์ด๋์์ isnan()
๋ฅผ ์ฌ์ฉํ์ฌ float๊ฐ NaN์ธ์ง ํ์ธํ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ float๊ฐ ์๋ ๊ฒ์ ์ ๋ฌํ๋ฉด (์ : ์ ์, ๋ฒกํฐ, ํ๋ ฌ ๋ฑ) ์
ฐ์ด๋๊ฐ ์ค๋จ๋์ง๋ง ํธ์ง๊ธฐ์์ ์ค๋ฅ ๋ฉ์์ง๊ฐ ํ์๋์ง ์์ต๋๋ค. ํ์ง๋ง ๊ฒ์์ด ์คํ๋ ๋ ๋ง์ ์ค๋ฅ ์คํธ์ ๋ฐ๊ฒ๋ฉ๋๋ค.
drivers/gles3/shader_gles3.h:377 - Condition ' !version ' is true. returned: -1
์๋ฅผ ๋ค์ด ๋ค์ ์ ฐ์ด๋๋ฅผ ์ฌ์ฉํด๋ณด์ญ์์ค.
shader_type spatial;
void fragment()
{
ALBEDO = isnan(vec2(0,0)) ? vec3(1.0) : vec3(0.0);
}
์ฌ๊ธฐ ๊ตฌ์ ํ ๋นํ์ต๋๋ค. ๋ณด์๋ค์ํผ ๊ตฌ๊ฐ ์ด์ํ๊ฒ ๋์ด๋ ํ๋ฉด ๊ณต๊ฐ์ ๊ทธ๋ ค์ง๋๋ค.
์ฌํ ๋จ๊ณ :
์ต์ ์ฌ์์ฐ ํ๋ก์ ํธ :
shadernanbug.zip
์ฌํ ๊ฐ๋ฅํ ๋ฒ๊ทธ ์ ๊ณ ์ ๊ฐ์ฌ๋๋ฆฝ๋๋ค. ์ด ๋ฒ๊ทธ๋ฅผ ์์ ํด์ผํ๋ ํ ์์ฒญ์ ๋ง๋ค์์ต๋๋ค.
isnan (vec2)๊ฐ ๋ถ์ธ vec2๋ฅผ ๋ฐํํ๊ธฐ ๋๋ฌธ์ ์ ฐ์ด๋ ์ฝ๋๊ฐ ์์ ๋์ด๋ ์ปดํ์ผ๋์ง ์์์ ์๋ ค ๋๋ฆฌ๊ณ ์ํฉ๋๋ค. ํ์ธํ๋ ค๋ vec2์ ์์๋ฅผ ์ง์ ํ๋ฉด ์ฝ๋๊ฐ ์ปดํ์ผ๋ฉ๋๋ค. ์๋ฅผ ๋ค๋ฉด :
shader_type spatial;
void fragment()
{
ALBEDO = isnan(vec2(0,0)).x ? vec3(1.0) : vec3(0.0);
}
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
์ฌํ ๊ฐ๋ฅํ ๋ฒ๊ทธ ์ ๊ณ ์ ๊ฐ์ฌ๋๋ฆฝ๋๋ค. ์ด ๋ฒ๊ทธ๋ฅผ ์์ ํด์ผํ๋ ํ ์์ฒญ์ ๋ง๋ค์์ต๋๋ค.
isnan (vec2)๊ฐ ๋ถ์ธ vec2๋ฅผ ๋ฐํํ๊ธฐ ๋๋ฌธ์ ์ ฐ์ด๋ ์ฝ๋๊ฐ ์์ ๋์ด๋ ์ปดํ์ผ๋์ง ์์์ ์๋ ค ๋๋ฆฌ๊ณ ์ํฉ๋๋ค. ํ์ธํ๋ ค๋ vec2์ ์์๋ฅผ ์ง์ ํ๋ฉด ์ฝ๋๊ฐ ์ปดํ์ผ๋ฉ๋๋ค. ์๋ฅผ ๋ค๋ฉด :