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년 6월 14일 화요일
2016년 5월 30일 월요일
PSN
개발킷 활성화에는 DevKit 뒤쪽의 시리얼 넘버가 필요하다.
ex) 00-********-*******-***-D*****A
비공개 서포트에 요청하면 아래의 안내를 줌
ex) 00-********-*******-***-D*****A
비공개 서포트에 요청하면 아래의 안내를 줌
요청하신 시리얼 번호의 개발킷을 등록해 드렸으므로, 아래 내용을 참고해서 활성화를 진행해 주시기 바랍니다.
또한, 네트워크를 통한 자동 활성화 기능도 제공되고 있으므로, 아래 SDK 문서를 함께 참고해 주시기 바랍니다.
https://ps4.scedev.net/resources/documents/SDK/3.500/DevKit-Setup_Guide/0005.html?language=en (영어)
https://ps4.scedev.net/resources/documents/SDK/3.500/DevKit-Setup_Guide/0005.html?language=ja (일본어)
https://ps4.scedev.net/resources/documents/SDK/3.500/DevKit-Setup_Guide/0005.html?language=ja (일본어)
비공개 서포트에 요청하면 아래의 안내를 줌
ㅁㅁㄴㅁㄴ
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 : 함수이름, 파라미터 등등 모두 단어의 첫자는 대문자
지역변수와 루푸까지도
참고 사이트에는 블루프린트 이용법도 있으니 필요하면 찾아가보자
액터 서브클래스 유형
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)
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
그런줄 알면서도 왜 인지는 크게 생각지 못했던 부분들
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 함수
출처:여기
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 노이즈값을 리턴한다.
피드 구독하기:
글 (Atom)
