Programming

·Programming
https://forum.unity.com/threads/metainput-missing-semantics.1209718/ Question - 'metaInput' missing semantics After upgrading from 7.7.1 to 12.1.2, some of my custom shaders have the following error: 'UniversalFragmentMeta': input parameter 'metaInput' missing... forum.unity.com urp 버전 12부터 #pragma vertex UniversalVertexMeta #pragma fragment UniversalFragmentMeta 대신 #pragma vertex UniversalVerte..
·Programming
원래 Tangent라는 건 대충 표면 평면 벡터인 Tangent와 Bitangent 이고 이제 Normal과 Tangent, Bitangent는 모두 수직이고 이 3개 축을 가지고 만든 Space가 Tangent Space 이다... 이정도로만 알고 있었다. 하지만 이걸 이제 실제로 쓰는 상황이 오니 Tangent의 실제 쓰임이 어떻게 되는 지 이런 부분에 있어서 부족함을 느꼈다. 일단 Tangent Space로의 Transform에 대해서이다. 유니티 셰이더에서 Normal은 반드시 Tangent Space 노멀을 사용한다. 즉, Camera를 가지고 World Normal을 렌더링한 Render Texture를 가지고 Normal Blending을 하려고 했더니 World Nornal을 Tangent..
·Programming
FSM 같은 구조를 왜 써야 하는 가? 그냥 if문을 나열해서 ai를 만들어보면 이유를 알 수 있다. 동작이 하나 추가될 때 마다 Update에서 체크해야 하는 조건이 점점 쌓여간다. 현재 이 조건문을 체크할 필요가 없을 때도 체크를 하게 된다. 음...대충 예를 들자면 만약 총쏘는 게임을 만드는데, 앉아서 조준하고 있을 경우는 당연히 움직이지 않는 상태일 것이다. 하지만 if문으로 만들면 현재 플레이어가 점프상태인지, 즉 하늘에 떠있는지, 아니면 땅에 있는지 여부를 계속 체크하는 조건문이 매 update마다 불필요하게 호출되고 있을 것이다. 지금까지 state를 대체 어떤 기준으로 나눠야 하는지 엄청 고민이 되었는데, 이 if조건문이 따로 도는 것들을 state로 구분해주면 될 것 같다. 즉, 총쏘는 ..
·Programming
영어로 자료를 찾을 수 있도록 영어로 표기하였을 때 어떤 단어인지도 적어둔다. 구 : Sphere 광선 : ray 교차 : intersect / 또는 ray tracing 키워드로도 관련 내용이 있는 것 같다. 다각형 : polygon / triangle(삼각형) 먼저 교차 판정을 하기 전에 구는 무엇이고, 다각형이 무엇인지 정의를 해야 한다. 수학적인 정의를 말이다. 구 3차원 상에서 원점을 기준으로(원점이 아닌 경우는 transformation을 하면 된다.) 거리가 r만큼 떨어진 모든 점의 집합으로 정의할 수 있다. 그러므로 피타고라스 정리에 의해 $\sqrt{x^2 + y^2 + z^2} = r$ 이 된다. 이를 벡터로 표현한다면 구의 원점을 나타내는 위치 벡터 origin과 구 평면상의 임의의 ..
·Programming
1. 화면 좌표를 하나의 변수에 저장하기 int main() { unsigned int x = 1280, y = 720; unsigned int x2 = x 16)
·Programming
#pragma once #include "Bindable.h" /* 상수 버퍼를 Wrapping 하는 클래스. Map, UnMap을 data를 Set하면 자동으로 처리해주고 VSSetConstantBuffers를 해주는 함수 SetBuffer를 제공한다. */ template class CBuffer :public Bindable { protected: T _data; wrl::ComPtr buffer; public: CBuffer(Graphics& gfx) : Bindable(gfx) { D3D11_BUFFER_DESC desc = {}; desc.Usage = D3D11_USAGE_DYNAMIC; desc.ByteWidth = sizeof(T) + 16 - (sizeof(T) % 16); desc.B..
·Programming
#include #include using namespace std; enum Enum { One =0, Two, Three }; template struct Map; template struct Map { using SysType = float; }; template struct Map { using SysType = int; }; template struct Map { using SysType = char; }; template class A { private: typename Map::SysType element; public: typename Map::SysType& GetElement() { return element; } }; template class B : public A... { publ..
·Programming
#include using namespace std; enum Enum { One, Two, }; template struct Map; template struct Map { using SysType = int; }; template struct Map { using SysType = double; }; template class A { private: typename Map::SysType element; public: typename Map::SysType& GetElement() { return element; } }; template class B : public A... { public: template auto Get() -> typename Map::SysType { return static..
gohen
'Programming' 카테고리의 글 목록