shaderc.net
1.0.0
Google 쉐이더의 순 바인딩.
이 샘플은 vk.net을 사용하여 셰이더 모듈을 만듭니다. 성공시, Result 객체는 ShaderModuleCreateInfo PCode 필드에 적합한 생성 된 SPIRV 코드에 기본 포인터를 보유합니다. 이 포인터는 Result 처리가 될 때까지 유효합니다.
using ( Compiler comp = new Compiler ( ) ) {
using ( Result res = comp . Compile ( "test.vert" , ShaderKind . VertexShader ) ) {
if ( res . Status == Status . Success ) {
VkShaderModuleCreateInfo ci = VkShaderModuleCreateInfo . New ( ) ;
ci . codeSize = res . codeSize ;
ci . pCode = res . code ;
vkCreateShaderModule ( VkDev , ref moduleCreateInfo , IntPtr . Zero , out VkShaderModule shaderModule ) ) ; Shaderc Library는 C/C ++ 에서와 같이 #include 문을 추가 할 수있는 기능을 제공합니다. 이 기능은 Options 클래스 생성자에서 활성화되거나 사용되지 않으며 기본값이 활성화됩니다.
Options opt = new Options ( false ) ; 기본 Options 인스턴스는 포함 해상도를 가능하게하는 Compiler 생성자에 의해 생성됩니다. 컴파일러 생성자에게 사용자 정의 옵션 인스턴스를 제공 할 수 있습니다.
Compiler comp = new Compiler ( opt ) ;
comp . Options . InvertY = true ; C/C ++ 에서와 같이 로컬 또는 전역에 포함될 수 있습니다 ( ""또는 <>에 포함). 로컬은 ""에 동봉 된 현재 구문 분석 소스 파일에서 검색됩니다. 글로벌 포함 '<>'에 포함 된 글로벌 포함 Options.IncludeDirectories 에 나열된 디렉토리에서 검색됩니다. 경로는 실행 디렉토리와 관련이 있거나 절대적 일 수 있습니다.
comp . Options . IncludeDirectories . AddRange ( "shaders" , @"c:test" ) ; 기본값 포함 해상도를 무시하려면 임베디드 리소 소스를 검색하려면 Options 클래스를 도출하고 TryFindInclude 메소드를 재정의하십시오.
class OptionsWithCustomIncResolve : Options {
protected override bool TryFindInclude ( string sourcePath , string includePath , IncludeType incType , out string incFile , out string incContent ) {
.. .