2016년 6월 14일 화요일

Unity Shader Code - Unlit Transparent

Shader "Custom/UnlitTransparent"
{
/*Properties{
_Color("Color & Transparency", Color) = (0, 0, 0, 0.5)
_Alpha("Alpha", Range(0.0, 1.0)) = 1.0
}
SubShader{
Lighting Off
ZWrite Off
Cull Back
Blend SrcAlpha OneMinusSrcAlpha
Tags{ "Queue" = "Transparent" }
Color[_Color]

Pass{


}
}*/


Properties
{
_MainTex("Texture", 2D) = "white"{}
_Color("Color & Transparency", Color) = (0, 0, 0, 0.5)
_Alpha("Alpha", Range(0,1)) = 1

}

SubShader
{
Tags{ Queue = Transparent }
ZWrite Off
Lighting off
Cull Back
Blend SrcAlpha OneMinusSrcAlpha

Pass
{
SetTexture[_MainTex]
{
ConstantColor(1, 1, 1,[_Alpha])
Combine texture * constant
//Combine texture * constant DOUBLE
}
}
}


FallBack "Unlit/Transparent"
}

2016년 5월 30일 월요일

PSN

개발킷 활성화에는 DevKit 뒤쪽의 시리얼 넘버가 필요하다.
ex) 00-********-*******-***-D*****A

비공개 서포트에 요청하면 아래의 안내를 줌

요청하신 시리얼 번호의 개발킷을 등록해 드렸으므로, 아래 내용을 참고해서 활성화를 진행해 주시기 바랍니다.
또한, 네트워크를 통한 자동 활성화 기능도 제공되고 있으므로, 아래 SDK 문서를 함께 참고해 주시기 바랍니다.

비공개 서포트에 요청하면 아래의 안내를 줌

ㅁㅁㄴㅁㄴ

2016년 5월 13일 금요일

unreal

유니티 / UE4 비교 참고
참고 사이트에는 블루프린트 이용법도 있으니 필요하면 찾아가보자

액터 서브클래스 유형

Pawn 폰 - 제어가능한 게임 오브젝트, 전형적으로 플레이어의 아바타를 나타내는 액터 유형입니다. 폰은 Controller 컨트롤러 소유를 통해 플레이어나 AI 등에 의해 움직입니다.

Character 캐릭터 - 이족보행 아바타용으로 디자인된 보다 전문화된 버전의 폰으로, 그러한 게임 오브젝트 유형의 복잡도를 다수 처리합니다.

Controller 컨트롤러 - 폰을 Possess 빙의하여 제어합니다. 폰과 컨트롤러를 분리함으로써, 플레이어를 가정하고 그와 똑같은 인터페이스를 사용하여 폰을 임의로 조작하는 AI 컨트롤러 작성이 가능합니다.

Player Controller 플레이어 컨트롤러 - 플레이어의 게임패드, 터치, 마우스/키보드에서 입력을 받고, 그 입력을 사용하여 빙의중인 폰 또는 캐릭터를 구동시키기 위한 좀 더 전문화된 컨트롤러입니다.
-------------------------------------------------------------------------------------------------

Visual Studio 프로젝트 파일 을 수동으로 새로고침

UE4 새 버전을 다운로드한 후, 또는 디스크의 소스 파일을 수동으로 변경한 후). 메인 메뉴의 "Refresh Visual Studio Project" 또는 프로젝트 디렉터리에 있는 .uproject 파일에 우클릭 한 다음 "Generate Visual Studio project files" 를 선택
-------------------------------------------------------------------------------------------------

UObject 파생 유형을 만든다면
UMyObject* NewObj = NewObject<UMyObject>();
-------------------------------------------------------------------------------------------------

한 유형에서 다른 유형으로 형변환(Cast)
UPrimitiveComponent* Primitive = MyActor->GetComponentByClass(UPrimitiveComponent::StaticClass());
USphereComponent* SphereCollider = Cast<USphereComponent>(Primitive);


게임오브젝트 / 액터 소멸(Destroy)
MyActor->Destroy();


게임오브젝트 / 액터 소멸 (1초 딜레이)
MyActor->SetLifeSpan(1);


게임오브젝트 / 액터 비활성화
MyActor->SetActorHiddenInGame(true);     // Hides visible components
MyActor->SetActorEnableCollision(false);    // Disables collision components
MyActor->SetActorTickEnabled(false);        // Stops the Actor from ticking


컴포넌트에서 게임오브젝트 / 액터 접근
AActor* ParentActor =  MyComponent->GetOwner();


게임오브젝트 / 액터에서 컴포넌트 접근
UMyComponent* MyComp = MyActor->FindComponentByClass<UMyComponent>();


게임오브젝트 / 액터 찾기
// 이름 찾기 (UObject 에도 작동)
AActor* MyActor = FindObject<AActor>(nullptr, TEXT("MyNamedActor"));

// 유형으로 액터 찾기 (UWorld 오브젝트 필요)
for (TActorIterator<AMyActor> It(GetWorld()); It; ++It)
{
        AMyActor* MyActor = *It;
        // ...
}

// 유형으로 UObject 찾기
for (TObjectIterator<UMyObject> It; It; ++it)
{
    UMyObject* MyObject = *It;
    // ...
}

// 태그로 액터 찾기 (ActorComponent 에도 작동, 대신 TObjectIterator 사용)
for (TActorIterator<AActor> It(GetWorld()); It; ++It)
{
    AActor* Actor = *It;
    if (Actor->ActorHasTag(FName(TEXT("Mytag"))))
    {
        // ...
    }
}


게임오브젝트 / 액터에 태그 추가
MyActor.Tags.AddUnique(TEXT("MyTag"));// 액터는 태그를 여럿 가질 수 있습니다


모노비헤이비어 / 액터컴포넌트 에 태그 추가
// 컴포넌트에는 자체 태그 배열이 있습니다. 유니티는 컴퍼넌트가 달린 오브젝트에 반영
MyComponent.ComponentTags.AddUnique(TEXT("MyTag"));


게임오브젝트 / 액터 및 모노비헤이비어 / 액터컴포넌트의 태그 비교
// 붙어있는 게임오브젝트의 태그 검사
if (MyComponent.CompareTag("MyTag"))
{
    // ...
}

// 액터에 이 태그가 있는지 검사
if (MyActor->ActorHasTag(FName(TEXT("MyTag"))))
{
    // ...
}

// 액터 컴포넌트에 이 태그가 있는지 검사
if (MyComponent->ComponentHasTag(FName(TEXT("MyTag"))))
{
    // ...
}
-------------------------------------------------------------------------------------------------

블루프린트 단축키

VectorPrameters                  -> v + 마우스 좌크릭

-------------------------------------------------------------------------------------------------

Console Command

` 키를 누르면 활성화 됨: show me the money 를 생각하면 됨

FreezeRendering : 랜더링의 기준을 현 상태에서 정지.
                        Occulusion 이나 Frustum culling 이 제대로 적용 되는지 확인

r.* : rendering 관련된 명령어



stat GPU : 그래픽에서 이루어지는 작업 목록

ctrl + shift + ,(쉼표) : GPU 프로파일링
                            단일 프래임에서 수행한 모든 작업을 알려줌

stat FPS : FPS 를 출력한다.

stat UnitGraph : 1 프레임을 그리는데 드는 비용을 그래프와 시간으로 나타냄

Frame: 프래임 당 시간
Game: 프래임당 게임 로직에서 차지하는 시간
Draw: 그리는데 드는 시간(CPU 에서 차지하는 렌더링 부분)
GPU: 그래픽 카드에서 드는시간

에디터는 자체의 오버헤드를 가지기에 프로파일링을 에디터에서 하는건 정확하지 않음

다시 없에는 방법
stat UnitGraph 를 반복하면 글자는 남는다
stat Unit 을 하면 모두 사라짐




-------------------------------------------------------------------------------------------------
Blueprint 단축키

Material 에서
1 + 마우스 좌클릭 -> Constant 노드
2 + 마우스 좌클릭 -> Constant2Vector
3 + 마우스 좌클릭 -> Constant3Vector
4 + 마우스 좌클릭 -> Constant4Vector
e + 마우스 좌클릭 -> 제곱 노드
r + 마우스 좌클릭 -> reflection vector 노드
t + 마우스 좌클릭 -> Texture Sample 노드
u + 마우스 좌클릭 -> texture coordinate 노드
i + 마우스 좌클릭 -> if 노드
o + 마우스 좌클릭 -> OneMinus(1-x) 노드
p + 마우스 좌클릭 -> panner 노드
a + 마우스 좌클릭 -> add 노드
s + 마우스 좌클릭 -> ScalarParameter 노드
d + 마우스 좌클릭 -> Divide 노드
f + 마우스 좌클릭 -> MaterialFunctionCall (Unspecified Function) 노드
l + 마우스 좌클릭 -> Lerp 노드
c -> comment
v + 마우스 좌클릭 -> VectorParameter 노드
b + 마우스 좌클릭 -> BumpOffset 노드
n + 마우스 좌클릭 -> normalize 노드
m + 마우스 좌클릭 -> Multiply 노드

Custom Blueprint 에서
s + 마우스 좌클릭 -> Sequence 노드
d + 마우스 좌클릭 -> Delay 노드
f + 마우스 좌클릭 -> For Each Loop 노드
g + 마우스 좌클릭 -> Gate 노드
c -> comment
b + 마우스 좌클릭 -> Branch 노드
n + 마우스 좌클릭 -> Do N 노드
M + 마우스 좌클릭 -> MultiGate 노드
-------------------------------------------------------------------------------------------------
TextBox 편집

enter 입력시 포커스 유지
widget > Designer 탭 > TextBox 잡고 Detail 의 Behavior 의 고급 >
Clear Keyboard Focus on Commit 을 false 로 변경


-------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------
프로젝트 빌드 이슈
1. 프로젝트에 커스텀 Plugin 이 추가 되었을 경우
 - epic 에서 책임지고 관리 하는 플러그인이 아니기 때문에 스스로 플러그인의 의존성에
   문제가 발생하지 않도록 조치해야한다.
 - 에디터에서만 작동, 빌드본에는 포함되지 않아 작동 않음

  위 그림 같은 플러그인을 적용해야 하는 상황

  TangoAuthenticatorLib 폴더에는 말 그대로 TangoAuthenticatorLib.dll 파일 하나가 있다.
  TangoPlugin 폴더에는 Resources, Source 폴더와 TangoPlugin.uplugin 파일 등이 있다.

  우선 TangoAuthenticatorLib 폴더를 TangoPlugin\Source\ 하위로 이동 시킨다.

  이제 TangoPlugin\Source\ 하위에
  TangoPlugin 와 TangoAuthenticatorLib 폴더가 존재하게 됨

  TangoPlugin 폴더 내부에 있는 TangoPlugin.Build.cs 의 내용 수정

  PublicDependencyModuleNames.AddRange(new string[] { "Core", "Http", "Json", "JsonUtilities", "Sockets" });

 를 아래와 같이 수정( TangoAuthenticatorLib 를 추가해줌 )

  PublicDependencyModuleNames.AddRange(new string[] { "Core", "Http", "Json", "JsonUtilities", "Sockets","TangoAuthenticatorLib" });


  TangoAuthenticatorLib 폴더 하위에는 TangoAuthenticatorLib.Build.cs 파일 생성

  내용은 아래와 같이

using System.IO;
using UnrealBuildTool;

public class TangoAuthenticatorLib: ModuleRules
{
    public TangoAuthenticatorLib(ReadOnlyTargetRules Target) : base(Target)
    {
        Type = ModuleType.External;

        string LibraryPath = ModuleDirectory + "/";

        string DllName = "TangoAuthenticatorLib.dll";
        RuntimeDependencies.Add(LibraryPath + DllName);
    }
}

※ 4.18 버전의 경우
 RuntimeDependencies.Add(new RuntimeDependency(LibraryPath + DllName));
 이렇게 바꿔서 해줘야 함





-------------------------------------------------------------------------------------------------



주요 클래스

Prefix
U - UObject 상속 ( UTexture )
A - AActor 상속 ( AGameMode )
F - 그외의 모든 클래스와 struct 들 ( FName, FVector )
T - 탬플릿 ( TArray, TMap )
I - 인터페이스 클래스 ( ITransaction )
E - Enum 타입 ( ESelectionMode )
b - Boolean 변수 ( bEnabled )

pascal case : 함수이름, 파라미터 등등 모두  단어의 첫자는 대문자
                 지역변수와 루푸까지도

2016년 3월 3일 목요일

Unity Shader

=================================================================================

2. 서브 쉐이더

쉐이더 구조체 내용

 struct SurfaceOutputStandard
{
    fixed3 Albedo;      // base (diffuse or specular) color
    fixed3 Normal;      // tangent space normal, if written
    half3 Emission;
    half Metallic;      // 0=non-metal, 1=metal
    half Smoothness;    // 0=rough, 1=smooth
    half Occlusion;     // occlusion (default 1)
    fixed Alpha;        // alpha for transparencies
};
struct SurfaceOutputStandardSpecular
{
    fixed3 Albedo;      // diffuse color
    fixed3 Specular;    // specular color
    fixed3 Normal;      // tangent space normal, if written
    half3 Emission;
    half Smoothness;    // 0=rough, 1=smooth
    half Occlusion;     // occlusion (default 1)
    fixed Alpha;        // alpha for transparencies
};

struct Input {
            float2 uv_MainTex;
            float2 uv_GlossTex;
            float2 uv_BumpMap;
            float3 viewDir;
            float3 worldRefl;
            INTERNAL_DATA
        };



블랜드 설정(http://docs.unity3d.com/Manual/SL-Blend.html)
Blend SrcAlpha OneMinusSrcAlpha // Traditional transparency
Blend One OneMinusSrcAlpha // Premultiplied transparency
Blend One One // Additive
Blend OneMinusDstColor One // Soft Additive
Blend DstColor Zero // Multiplicative
Blend DstColor SrcColor // 2x Multiplicative



=================================================================================
3. shader 변수

- 텍스처 수치 변경 하지 못하게 하는 법
[NoScaleOffset] _MainTex("Texture", 2D) = "white" {}


- 변수에 접근
Material material;
material = transform.GetComponent<Renderer>().material;

float ddd = 1.0f;
ddd -= Time.deltaTime / 10.0f;
material.SetFloat("_Alpha", ddd);


=================================================================================



=================================================================================

6. sementics

- screenPos : 를 쓰기 위해서는 아래 참고
fixed4 frag(v2f i, UNITY_VPOS_TYPE screenPos : VPOS) : SV_Target{}


- face ( normal direction )
fixed4 frag(fixed facing : VFACE) : SV_Target


- vid ( vertex id 인듯)
v2f vert(float4 vertex : POSITION, uint vid : SV_VertexID)


- normal ( 노말 )
v2f vert(float4 vertex : POSITION, float3 normal : NORMAL)



=================================================================================

7. Culling & Depth Testing

Syntax

- Cull Back | Front | Off

- ZWrite On | Off   (default is On)
  Drawing solid objects, leave this on
  Drawing semitransparent effects, switch to ZWrite Off

- ZTest Less | Greater | LEqual | GEqual | Equal | NotEqual | Always
  (Default is LEqual : Draw objects in from or at the distance as existing objects; hide objects behind them)




  





2016년 1월 31일 일요일

Direct Show(ds)



===============================================
DS 에서 알아야 할 각종 멀티미디어 관련 단어

1. RIFF ( Resource Interchange File Format) : 해더에 압출 방식을 기술 해놓는걸 말하는 듯?  이것을 적용한 파일의 경우 다양한 필터의 적용이 가능해진다.

2.PCM (Pulse Code Modulation) : 아날로그 신호의 디지털화, 계단식으로 나누어 표현

3.ADPCM(Audio Compression Manager) : 목소리를 디지털 신호로 바꾸는 거라고..

4.ACM(Audio Compression Manager) : 기존의 윈도우 기술에서 사용되는 오디오 압축/해제. 그래서 압축된 형태의 오디오 파일은 ACM 래퍼 필터를 통해 해제

5.VCM(Vedio Compression Manager) : ACM과 함께 윈도우에서 사용되는 비디오 압축/해제 기술

===============================================


2016년 1월 27일 수요일

삼각함수 (sin cos tan) 정리

삼각함수는 수학의 기본, 기본이 흔들리는 나 같은 사람들을 위한 정리

그런줄 알면서도 왜 인지는 크게 생각지 못했던 부분들

1. Sin Cos Tan 뒤에는 한상 각도가 붙는다. 세타 같은

2. Sin, Cos 값을 나타내는 곡선은 -1 과 1을 오르락 내리락 하는 괴적을 나타낸다.

왜 그런가!

우선 sin cos tan의 의미 부터 살펴보자


출처

위 그림의 많은 부호들 중 가장 첫 번째로 봐야 할 것은 대문자 A 이다.
A는 그 꼭지점의 각도를 뜻한다.

B와 C도 각 꼭지점의 각도이다.

h는 빗변, b는 밑변, a는 높이.

a와 b는 마주보는 꼭지점 각도와 그 이름을 같게 한 것으로 보이고
h의 경우 소문자 c를 사용하지 않은 이유는
h의 길이는 다른 것에 의해 변경되지 않기 때문이다.
또한 각도 C의 경우 늘 그 값이 90로 가정되기 때문이다.
정해진 상수의 경우 특이한 문자로 정해둔 것 같다.

이제부터는 sin, cos, tan 뒤에 그 A를 붙여보고 그 값을 구해볼 것이다.


sinA = a/h
cosA = b/h
tanA = a/b = sinA/cosA






2015년 12월 30일 수요일

HLSL 내장함수, shader 함수

출처:여기

1. 삼각 함수

sin(x), cos(x), tan(x) : 기본삼각함수

asin(x), acos(x), atan(x) : 역삼각함수

atan2(y,x) : atan(y/x)에 해당하는 함수로, 
    atan(x)는 [-π/2, π/2]의 범위의 값을 가지지만, atan2(y,x)는  [-π, π]의 값을 리턴한다.
    atan2(y,x)는 x≠0 이면 항상 올바른 값을 계산핤 수 있으므로 더 선호한다.

sinh(x), cosh(x), tanh(x) : 쌍곡 삼각함수

sincos(x,s,c) : sin(x)와 cos(x)를 동시에 s, c로 리턴한다. 여기서 s, c는 x와 동일한 차원의 타입이어야 한다.

degrees(x) : 라디안 단위의 x값에 해당하는 각도값을 리턴한다.

radians(x) : 각도 단위의 x값에 해당하는 라디안값을 리턴한다.


2. 수학 함수
sqrt(x) : 제곱근

rsqrt(x) 
: 제곱근의 역수

exp(x), exp2(x), pow(x, y) : e^x, 2^x, x^y

ldexp(x) : x * 2^y

log(x), log10(x), log2(x) : loge(x), log10(x), log2(x)
→ 모든 로그함수의 인자값 x는 양수값으로 지정해야 한다.
    x가 음수이면 함수값이 정의되지 않고, x=0이면 -무한대를 리턴한다.


3. 값 변환 함수

abs(x)
 : 절대값

sign(x) : 부호에 따라 음수이면 -1, 0이면 0, 양수이면 1을 리턴

ceil(x) : 올림한 정수를 리턴
floor(x) : 내림한 정수를 리턴
round(x) : 반올림한 정수를 리턴
→ 리턴하는 정수값의 타입은 모드 float 타입이다.

max(x,y), min(x,y) : 최대, 최소값

clamp(x, min, max) : x를 [min, max] 범위로 클램프한다.
    즉, x가 범위안에 있으면 x를 그대로 리턴하지만, min보다 작으면 min을, max보다 크면 max를 리턴한다.

saturate(x) : x를 [0, 1] 범위로 클램프한다.

lerp(x,y,s) : 선형보간인 x + s(y - x) 를 리턴한다. x, y, s는 모두 동일한 타입으로 지정.

step(x,y) : x≤y 이면 1을 리턴하고, 그렇지 않으면 0을 리턴한다.

smoothstep(min,max,x) : x가 [min, max] 사이의 값인 경우에 대해서 [0, 1] 사이에서 부드럽게 변하는
    Hermite 보간법을 리턴한다. x가 min보다 작다면 0을 리턴하고, max보다 크다면 1을 리턴한다.

asfloat(x) : 입력인자값을 float 타입으로 바꾼다.
asint(x) : 입력인자값을 int 타입으로 바꾼다.
asuint(x) : 입력인자값을 uint 타입으로 바꾼다.

fmod(x,y) : x/y의 나머지를 실수로 리턴한다.

frac(x) : x의 소수점 이하 부분을 리턴한다.

frexp(x,e) : 주어진 실수 x의 표현에서의 소수점 이하값인 가수부분과 지수부분을 동시에 리턴한다.
    가수부분을 e로 리턴하고, 지수부분을 함수리턴값으로 리턴한다.

modf(x,i) : x의 정수부분을 i로 리턴하고, 소수점 이하부분을 함수리턴값으로 리턴한다.


4. 테스트 함수

a11(x) : 인자값의 모든 원소들이 0이 아닌지를 검사한다. 모두 0이 아니면 bool타입의 true값을 리턴한다.

any(x) : x의 원소중에 0이 아닌 원소가 하나라도 있으면 true값을 리턴한다.

isfinite(x) : 인자값이 무한대가 아닌 유한한 값이면 true를 리턴한다.

isinf(x) : 무한대 값(±INF)이면 true를 리턴한다.

isnan(x) : NAN(Not a Number)이면 true를 리턴한다.


5. 벡터 함수

cross(x,y) : 두 벡터의 외적을 계산한다. 두 인자값과 리턴값은 모두 float3 타입이다.

dot(x,y) : 두 벡터의 내적을 계산한다.
distance(x,y) : 두 벡터의 거리를 계산한다.
length(x) : 벡터의 길이를 계산한다.
→ 이들은 모두 하나의 float를 리턴한다.

normalize(x) : 정규화된 벡터를 리턴한다. 즉, 리턴값은 x/length(x) 와 동일하다.

determinant(m) : 행렬식을 리턴한다. 입력인자는 정방행렬이어야 한다.

transpose(m) : 전치행렬을 리턴한다.

mul(x,y) : 두 행렬의 곱을 계산한다.


6. 기타 함수

ddx(x), ddy(x) : 스크린공간의 x, y 좌표에 대한 x, y의 편미분을 리턴한다.
fwidth(x) : abs( ddx(x) ) + abs( ddy(x) ) 를 리턴한다.
clip(x) : x의 한 원소가 0보다 작으면 현재 픽셀을 버린다.
→ 이 함수들을 픽셀셰이더에서만 사용할 수 있다.

↓ 고급기법에서 사용되는 함수
faceforward(n, i, ng) : 관찰자를 향하는 표면 노말을 리턴한다.
reflect(i, n) : 반사벡터를 리턴한다.
refract(i, n, R) : 굴절벡터를 리턴한다.
lit(n·l, n·h, m) : 조명계수 벡터를 리턴한다.
noise(x) : 연기나 화재효과에 사용되는 Perlin 노이즈값을 리턴한다.