Unity Compute shaders 컴퓨팅 셰이더

2291 단어 unityshader렌더링
Unity Compute shaders 컴퓨팅 셰이더
  • 개요
  • 그래픽 카드에서 일반 렌더링 파이프라인과 별도로 작동하는 프로그램
  • 병렬 알고리즘 실행 가능
  • 게임 렌더링 속도 향상
  • SystemInfo.supports ComputeShaders 지원 정보

  • 예제 코드
    https://blog.csdn.net/ak47007tiger/article/details/93411853
    Compute shader Assets Unity는 컴퓨팅 셰이더를 저장하는 데 사용되는 요소
  • .컴퓨터 파일,hlsl 스타일의 언어 사용
  • 아래 shader는 빨간색으로 무늬를 채운다
  • #pragma kernel FillWithRed
    
    RWTexture2D res;
    
    [numthreads(1,1,1)]
    void FillWithRed (uint3 dtid : SV_DispatchThreadID)
    {
        res[dtid.xy] = float4(1,0,0,1);
    }
    
  • compute shader에는 여러 개의kernel이 있어야 합니다
  • .
  • #pragma kernel KernelName
  • #pragma kernel KernelA
    #pragma kernel KernelB
    

    Invoking compute shaders 에서 셰이더를 계산하는 방법 실행
  • 스크립트에 ComputeShader 참조가 있으며 ComputeShader를 사용합니다.Dispatch 실행
  • 데이터 준비
  • ComputeBuffer
  • enable RandomWrite의 Render Texture
  • 오픈

    Texture samplers in compute shaders 착색기의 텍스쳐와 샘플링 머신 계산
  • 텍스처 소재 구분 없음
  • 유닛에서 명명 규칙에 따라 사용
  • 형식 TextureNameSimpler
  • Texture2D MyTex; SamplerState samplerMyTex
    
  • 내장 Sampler 사용
  • Filter mode 설정
  • wrap mode 설정
  • 형식: textureNameFilterModeWrapMode

  • 크로스 플랫폼 지원
  • 개요
  • unity는hlsl을 특정 플랫폼의shader 언어
  • 로 번역합니다
  • Cross-platform best practices
  • DX11이 지원하는 많은 기능은 Metal or OpenGL ES에서 지원하지 않기 때문에 기능을 적게 사용할 수 있으면 적게 사용합니다
  • out-of-bounds 메모리 경계 오류 피하기
  • 리소스를 초기화합니다.초기화되지 않은 경우 어떤 플랫폼은 0을 받고, 어떤 플랫폼은 NaNs
  • 를 받습니다.
  • 모든 자원을 귀속시킨다.어떤if분지에서 일부 자원을 사용하지 않더라도 귀속
  • Platform-specific differences
  • Metal
  • 텍스쳐의 원자 작동이 지원되지 않음
  • GetDimensions 조회가 지원되지 않습니다. 모든 것을 shader에 전송해야 합니다
  • OpenGL ES 3.1은 4개의 Compute Buffer만 지원하므로 Opengles 플랫폼을 개발할 때 데이터를 structs로 조립하는 것이 좋습니다

  • HLSL-only or GLSL-only compute shaders 특정 플랫폼 처리
  • HLSL 플랫폼이나 수동으로 GLSL을 써야 하는 경우
  • 가 발생할 수 있음
  • CGPROGRAM ENDCG 패키지의 내용은 비HLSL 플랫폼에서 처리되지 않습니다
  • GLSLPROGRAM ENDGLSL 패키지의 내용은 한 글자씩 GLSL 원본으로 처리됩니다.대상 플랫폼이 OpenGL 또는 GLSL 플랫폼인 경우에만 유효합니다.
  • 자동 변환된 shader는 HLSL 데이터 레이아웃 방식을 사용하고 수동으로 쓴 GLSL은 GLSL 데이터 레이아웃 방식을 사용한다
  • 데이터 layout: 데이터가 메모리에 배치되는 방식은 바이트 정렬과 관련이 있을 수 있음
  • 좋은 웹페이지 즐겨찾기