이상해씨++ 89

2019.03.26 유니티 셰이더 그래프 설치

1. 셰이더 그래프 설치 Window-> Package Manager -> All에 들어가서 Shader Graph를 설치한다. 설치하고 Create->Shader->PBR Shader Graph를 눌러서 만들면 마젠타가 뜬다. 마젠타의 색말은 당신에게 오류가 있어요. 똑같이 package manager에 들어가면 Render-pipelines.high~ Render-pipelines.light~가 있는데 둘 중 아무거나 깔아도(둘 다 깔아도) 실행하는데에는 문제가 없음. 이것을 설치하자. 2. 파이프라인 경량화된 파이프라인(light weighted pipeline)을 설치해보았다. Create->Rendering->Lightweight Pipeline Asset을 생성하고 Edit->Project S..

2020 이전/Unity 2019.03.26

[190323] 볼륨메트릭 라이팅1

위키: https://en.wikipedia.org/wiki/Volumetric_lighting Volumetric Lighting에서는 광원을 방출하는 빛 깔때기를 투명한 오브젝트로 모델하고 그것을 "volume"을 담는 용기로 간주한다. 그 결과로 빛은 볼륨안의 삼차원 medium(안개, 먼지, 연기, 열기)등을 통과하는 효과를 줄 수 있는 능력을 가지게 된다. 렌더링 된 씬에 추가적으로 라이팅을 입히는 기법. 구현상으로는 전체 렌더타겟의 텍스쳐와, 광원, 광원과 광원을 가리는 차폐물을 렌더링한 텍스처 3가지로,광원차폐물 텍스처는 광원은 그대로 렌더링하고 차폐물을 검은색 단색(0,0,0,1)으로 렌더링하여 만들고, 그 텍스처를 전체 렌더타겟 텍스쳐에 이챠이챠 움직여서 더하면 된다고한다. Crepusc..

C++의 까다롭고 유별난 친구들2

전문가를 위한 c++ 10강 공부한거 요약 c++11/ c++14 유니폼 초기화 유니폼 초기화를 사용하면 축소 변환이 일어날 경우 컴파일 에러를 발생시킨다. 유니폼 변환은 STL 컨테이너에도, 동적으로 할당되는 배열에도, 생성자 초기화 리스트에도 이용할 수 있다. 초기화 리스트 생성자 초기화 리스트와는 다르다! 다르다! 속성 사용자 정의 리터럴 C++ 리터럴 표준 1. 문자 'a'2. "character array" 3. float4. 0xab c++11은 리터럴 연산자를 통해 리터럴을 정의할 수 있게 한다.미가공 모드에서는 문자/문자열, 가공모드에서는 int같은 특정 타입의 값을 받는다. 헤더파일 그 다른이름은 순환참조 척결 1. 인클루드 가드 2. #pragma once #ifndef ~ #endif..

2020 이전/C++ 2019.03.22

포워드, 디퍼드 렌더링

https://www.slideshare.net/cagetu/kgc2012-deferred-forward 포워드 렌더링과 디퍼드 렌더링의 차이는 씬을 렌더링하는 파이프라인의 구현 방식에 있다. 1. 포워드 렌더링 전통적인 방법으로 메쉬 하나를 그리면서 모든 계산을 한번에 시행. 라이팅의 계산수는 메쉬의 수에 비례한다. 포워드 렌더링은 여러개의 리얼타임 라이팅을 다루는데 취약하다. 2. 디퍼드 렌더링 많은 수 의 실시간 라이팅(동적 라이팅)을 비교적 좋은 성능으로 처리할 수 있다. 라이팅 패스(조명)과 지오메트리 패스(메쉬)가 분리되어있고 라이팅을 마지막에 처리하기 때문에 화면에 보이는 픽셀의 라이팅을 처리하고, 많은 수의 실시간 라이트들의 드로우 콜에 대한 부담을 줄일 수 있다. 1. 멀티 렌더 타겟을 ..

2019.03.15 큐브맵 스카이박스에 적용시키기

2018.2.2 기준 Cube map 유니티 매뉴얼 : https://docs.unity3d.com/kr/2018.2/Manual/class-Cubemap.html custom map makers skybox download: http://www.custommapmakers.org/skyboxes.php 1장 레거시 실패 어셋창에서 Create>Legacy>Cubemap을 하면 친절하게 6개의 낱장 텍스처를 끌어다쓰면 바로 손쉽게 쓸 수 있게 해준다. 하지만 크래시가 안난다고 하지는 않았지. 계속 컴퓨터에서 크래시가 나서 포기함 2장 큐브맵 레이아웃 고개를 들어 포토샵을 보아 큐브맵 레이아웃을 직접 만들어보자커스텀 맵 메이커에서 스카이박스를 골라 적당히 다운받고 위에 제시된 레이아웃을 따라 right, ..

2020 이전/Unity 2019.03.15

C++의 까다롭고 유별난 친구들

전문가를 위한 C++ 10강 공부 요약 참조형: 참조는 다른 변수에 대한 alias(별명)참조형 변수는 항상 생성시점에 초기화해야한다.( 멤버 변수인경우 클래스 생성자 초기화 리스트에서 초기화 되어야한다. ) 참조와 포인터의 선택 기준. 1. 포인터와 달리 참조는 유효하지 않는 데이터를 가리키는 것이 거의 불가능한다.2. 역참조 연산을 할 일이 없으므로 포인터를 사용하면 접할 수 있는 역참조 오류를 볼 일이 없다.3. 참조형 파라미터로는 디폴트 값을 지정할 수 없다. 포인터는 파라미터에서 nullptr과 같은 디폴트값 지정 가능4. 해당 메모리를 누가 소유하고 있는가. 변수를 넘겨받는 측이 객체와 관련한 메모리를 해제해야한다면 포인터를 사용, 포인터를 사용해야하는 유일한 상황은 가리키는 대상을 바꾸어야 ..

2020 이전/C++ 2019.03.13

HLSL 셰이더: paper burn, mask, distortion

R채널에는 포토샵으로 생성한 구름 텍스쳐, 그리고 G채널에는 마스킹에 쓸 텍스쳐를 넣었다. 1. paper burn 셰이더 셰이더 코드로 누적시간값에 사인을 연산한 값을 넘겨줘(g_vMtrlDif.a 에 넘겨주었다) 필터의 값으로 썼다. 해당 텍스처의 r값이 g_vMtrlDif.a의 값보다 작으면 해당 텍스처를 출력하지 않는다. g_vMtrlDif.a값을 증가시키면 1이될때 어떤 텍스처도 출력되지 않을 것이다. 이러면 심심하니까 좀더 불에 타는듯이 하려면 테두리가 있어야하는 것을 알 수 있다필터 크기에 간격을 두어 빨강-노랑-흰색을 출력하도록 한다. 내새꾸는 메인컬러는 빨강이므로 (1,0,0,1)로 간다. PS_OUTPUT_SINGLE FX_PaperBurn(VS_OUTPUT_TEX input) { PS..

2020 이전/DirectX 2019.03.04

C++ 함수포인터 넘겨줄 때 명시적 형식이 없습니다

함수포인터 넘겨줄때 매개변수 인자에서 구조체 별칭을 타입으로 인식하지 못한다. 식별자가 정의 되어있지 않습니다. 원래 구조체의 형식네임을 따르면 제대로 인식이 된다. 클래스 경우? 별 문제가 없다. typdef의 문제도 아니고 구조체만 이런 문제가 있다. VS2015에서는 typdef한 이름을 그냥 써도 잘 되는거보면 나의 힘과 노력으로는 할 수 없어요~(VS2017쓰고있습니다)

2020 이전/C++ 2019.02.21