셰이딩모델5 [UE5]Custom Shader : PART5_Editing GBuffer 시작하며 GBuffer는 디퍼드 렌더링에서 여러가지 정보들을 저장하고 각 셰이더에서는 이 정보들을 가지고 연산을 수행해요. UE에선 색상, 메탈릭, 스페큘러, 노말, 탄젠트, 뎁스 등등을 64Byte로 패킹해서 쓰고 있는데 이 크기를 넘는 것은 사실 피해야하지만 일단 어떻게 수정하고 어떻게 써야하는지 알아보기 위해 지난 글에서 추가한 커스텀 머티리얼 아웃풋의 첫번째 핀인 half4 형식의 CustomOutput01로 들어오는 값을 GBuffer에 넣어 볼게요. 머티리얼 프로토타입을 제작해서 테스트를 해보고 도메인에서 불표한 핀을 재활용하는 방식으로 셰이딩 모델을 완성하면 되겠습니다. 엔진 코드 수정하기 SceneTexturesConfig.h BEGIN_GLOBAL_SHADER_PARAMETER_STRUC.. 2023. 10. 26. [UE5]Custom Shader : PART4_Custom Material Ouput 시작하며 셰이더 도메인을 보면 베이스 컬러, 노말, 탄젠트 등 여러 입력을 받는 핀들이 있고 앞선 글에서 커스텀 데이터 핀을 활성화 시켜서 커스텀 데이터 입력을 받을 수 있도록 했는데 만약에 작성 중인 커스컴 셰이딩 모델이 더 많은 입력을 필요로 한다면 도메인의 핀을 새로 만들어주는 작업이 필요합니다. 하지만 도메인에 직접 핀을 생성하는 건 엔진 코드를 생각보다 많이 수정 해야하니 이를 피하기 위해 커스텀 머티리얼 아웃풋을 만들어서 커스텀 셰이딩 모델의 입력을 추가해 볼게요. 엔진 코드 수정하기 MaterialExpressionMabiLitMaterialOutput.h 추가할 핀을 선언할 헤더 파일을 작성합니다 // [ CUSTOM ] Expanding Material Output #pragma once.. 2023. 10. 16. [UE5]Custom Shader : PART3_Using Custom Data 시작하며 커스텀 셰이딩 모델을 추가한 뒤 막상 이를 사용해서 머티리얼을 만들려고 하면 파라미터를 전달할 핀이 부족한 경우가 생겨요. 그래서 이번에는 현재 머티리얼 도메인에 비활성화 돼있는 핀을 활성화하고 그 핀들에 노드를 연결하여 커스텀 파라미터를 셰이더에 전달해 보려고 해요. 앞서와 마찬가지로 먼저 엔진 코드를 수정하고 빌드한 후에 셰이더 코드를 수정해 보기로 하죠. Custom Data ##은 간단하게 몇몇 코드를 수정하는 것으로 활성화 됩니다. 이들은 스칼라고 셰이더에서는 half로 전달 돼요. 3차원 벡터를 전달하는 방법에 대해서는 나중에 얘기로 하기로 할게요. 엔진 코드 수정하기 Material.cpp 어떤 셰이딩 모델에서 커스텀 데이타 핀을 쓸지 알려줍니다 static bool IsProper.. 2023. 10. 10. [UE5]Custom Shader : PART3_Adding shading models_2 시작하며 앞선 글에서는 커스텀 셰이딩 모델 추가를 위해 엔진 소스 코드를 수정했습니다. 셰이딩 모델을 선언하고 컴파일 환경을 설정하는 등의 작업이었죠. 셰이더 코드 쪽에는 머티리얼 핀을 통해 들어온 색상 값이나 메탈릭/러프니스/스페큘라 등의 재질 값들을 갖고 화면에 뿌려질 그림을 그려주는 등의 좀 더 실질적인 코드들이 들어있습니다. 파일 별로 편집을 한 후 컴파일을 수행하는 시간이 다 달라요. 그래서 ShadingModels.ush같이 오랜 시간 컴파일하는 코드를 수정할 경우는 가급적 미리 어떤 식으로 보여질 지 계획을 잘 세우고 접근하는 것이 좋아요. 셰이더 코드는 C++로 작성돼 있는 엔진 코드와는 다르게 비주얼 스튜디오에서 인텔리센스를 지원하지 않아요. 플러그인을 사용하거나 익스텐션을 이용해야 하죠.. 2023. 9. 27. 이전 1 2 다음