2013-03-10 2 views
3

VS2012 셰이더 디자이너에서 제대로 작동하는 셰이더를 만들었습니다. DGSL 형식으로 저장 한 다음 HLSL로 내 보냅니다.VS2012 셰이더 디자이너를 사용하여 XNA 셰이더 만들기

나는 내가 XNA 프로젝트에서이를 사용할 수있을 거라고 생각했지만 나에게 매우 새로운 두 가지가있다 그리고 나는 누군가가 올바른 방향으로 날 지점 수 바라고 있어요 :

1) 내가 그렇게 본 적이 모든 쉐이더는 지금까지이

technique RibbonShader 
{ 
    pass Pass0 
    { 
     VertexShader = compile vs_2_0 VertexShader(); 
     PixelShader = compile ps_2_0 PixelShader(); 
    } 
} 

같은 부분은 불행히도 VS2012 내보내기 기능에 의해 생성 된 HLSL 만 주요 기능, 그래서 등이있다했다 :

P2F main(V2P pixel) 
{ 
    // lots of stuff 
    return result; 
} 

수있는 사람 세대 내가 '셰이더'('main'함수가있는 함수)를 얻으려면 어떻게해야하는지 설명해주세요. 디자이너가 위와 같은 기술/패싱 형식을 가진 형식으로 잘 작동합니까?

답변

2
technique RibbonShader 
{ 
    pass Pass0 
    { 
     VertexShader = compile vs_2_0 VertexShader(); 
     PixelShader = compile ps_2_0 PixelShader(); 
    } 
} 

효과 프레임 워크를 사용하는 셰이더에 사용되는 형식입니다. Visual Studio에서 생성되는 셰이더는 단일 주요 기능을 가진 정점 또는 픽셀 셰이더입니다.

효과 파일로 변환하려면 기술 부분을 추가하고 효과 프레임 워크를 사용해야합니다. 당신이 효과 프레임 워크를 사용하지 않는 경우

V2P mainVS(...) 
{ 
    // vertex shader 
} 

P2F mainPS(V2P pixel) 
{ 
    // lots of stuff 
    return result; 
} 

technique YourTechniqueName // can be anything you choose. 
{ 
    pass Pass0 
    { 
     VertexShader = compile vs_2_0 mainVS(); 
     PixelShader = compile ps_2_0 mainPS(); 
    } 
    // can have other passes 
} 

같은 무언가가, 당신은 여전히 ​​내 한 주와 함께 별도의 버텍스/픽셀 쉐이더 파일을 사용 및 Visual Studio 이진 쉐이더 파일로 컴파일 할 다음은로드 할 수 있습니다 귀하의 신청서에 기재하십시오.

Visual Studio 2012에서는 쉐이더 파일을 프로젝트에 추가 할 때 자동으로 수행됩니다. 또한 마우스 오른쪽 버튼을 클릭하여 셰이더 파일의 속성으로 이동하면 해당 셰이더 모델 버전과 함께 * .fx (효과 파일) 또는 정점/픽셀 셰이더가 변경 될 수 있습니다.

희망이 있습니다.

+1

감사합니다. 생성 된 셰이더에는 수십 개의 매개 변수가 포함되어 있으며 그 중 대부분은 무시되며 일부는 필수적이라고 덧붙입니다. 그리고 셰이더의 사용에 중요한 것을 나타내는 문서는 없습니다. 그리고 이렇게 생성 된 HLSL을 소비하는 방법을 보여주는 샘플이 없습니다. 실제로 DGSL 내보내기가 ANSI에서 수행되고 FX 컴파일러에서 유니 코드가 필요하다는 것을 알고 있기 때문에 실제로 시도한 유일한 사람이 될 수 있습니다. 따라서 수동으로 메모장으로 변환해야합니다. 그게 어떻게 작동했는지 모르겠다. – Dave