
위 코드에서 TransformVertexToHClip를 Visual Studio의 f12를 통해 선언부로 가서 어떻게 구성되어있나 보고 싶었지만,
작동이 안되어서 방법을 찾아서 약식으로라도 해결한 방법을 공유하는 포스트입니다.
결론 정리
1.솔루션에 관련 파일들 매핑하기
2.문자열검색기로 해당 선언부찾기
[이유에 대한 글이기에 어떻게 해야하는가를 보고싶은 분은 빠르게 내려주세요.]
일단 왜 안되는가를 검색기반 ai인 퍼플렉시티와 같이 공부하면서 정리를 했습니다.
-첫 번째 이유
Unity SRP 셰이더는 #if #elif #else의 연속의 패턴으로
VS는 어떤 define이 활성화되는지 모름
Unity Editor가 컴파일할 때만 알 수 있음
➡ 결과:
“정의가 여러 개다” → 인덱싱 포기
-두 번째 이유
#include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Common.hlsl"
위 경로는 실제 파일 시스템 경로 ❌Unity가 가상으로 resolve
VS에서 직접 열었을 때의 경로는 아래와 같았고,
Unity.RenderPipelines.Core.ShaderLibrary/Library/PackageCache/com.unity.render-pipelines.core@3b8a69964696/Common.hlsl
그렇기에 VS 입장에서는 “이 경로를 신뢰해도 되나?” → 애매 → 매크로 추적 비활성화
-세 번째 이유
Unity는: 자체 전처리 단계 "C 스타일 전처리"로 안쓴다고 한다. 그래서 IDE 바깥에서 처리
-플랫폼별 define 주입
-ShaderVariant 키워드
위와 같은 이유로 VS가 아닌 라이다를 통해서 작업하는게 속편하지만...
그럼에도 VS를 쓰고 싶은데 셰이더관련 매크로 및 선언 함수를 까보고 싶은사람에게 다음 내용들이 도움이 될 것입니다.

일단 먼저 솔루션탐색기에서 해당 hlsl파일을 검색하기 위해 등록을 해야합니다.
Preference-External Tools - Generate.csproj files for:
기본 세팅값은 Embedded package, Local packages만 true입니다.
추가적으로 Built-In package를 true해주세요.
Built-In package는 rendering관련 폴더및 파일들을 담당하고,
Registry package에서는 unity input이나 ai같은 라이브러리 담당하는 용도로 추정됩니다.
그 외는 테스팅을 안해봤습니다.

어마어마한 양의 폴더와 파일들이 솔루션 탐색기에 담긴 모습입니다.
#include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Common.hlsl"
include를 한 파일의 위치를 알고싶다면, 위 경로글처럼 굵게 표시한 부분들을 유심히 보고 찾으면 됩니다.
그런데 우리는 도구를 쓸 줄아는 사람이기에 좀더 편한 방법을 사용하도록 해보겠습니다.

Ctrl+shift+f 는 문자열 검색기 및 전체 수정기입니다.

자료형 명칭() 나오는 구간이 원하는 선언부입니다.