본문으로 바로가기
반응형

참고 : blog.hybrid3d.dev/2020-12-21-reason-for-slow-of-if-statement-in-shader

 

쉐이더에서 IF 문이 느린 이유

개요 쉐이더에서 if 문이 성능에 좋지 않다는 것은 프로그래머가 아니더라도 많이들 알고 있는 사실이다. 중요한 것은 단순히 if 문이 느리다는 것이 아니다, if 문이 필요해서 if 문을 쓰는 것인

blog.hybrid3d.dev

 

참고 : docs.microsoft.com/en-us/windows/win32/direct3dhlsl/dx-graphics-hlsl-if

 

if Statement - Win32 apps

Conditionally execute a series of statements, based on the evaluation of the conditional expression.

docs.microsoft.com

 

 

         half4 frag(VertexOutput i) : SV_Target
           {   

            float4 col = i.uv.x;

            return color;
            }  

 

 

 

        
          half4 frag(VertexOutput i) : SV_Target
           {   

            float4 col = col.rgba;

            if(i.uv.y > 0.5)
            {
            col = pow(i.uv.x, 2.2) ;
            }
            else
            {
            col = i.uv.x;
            }

          return color;
          }  

 

 

 

 

삼항연산자로 변환하면 아래와 같다. 이는 ASE로 변환해도 내용은 순서만 살짝 다르고 똑같다.

        
          half4 frag(VertexOutput i) : SV_Target
           {   

          float4 col = i.uv.y > 0.5 ? pow(i.uv.x, 2.2) : i.uv.x;
          //    조건문 ?  참일때 실행값 :  거짓일때 실행값 ;
          return color;
          }  

 

 

 

 

반응형

'Technical Report > R&D test' 카테고리의 다른 글

URP BSDF.hlsl  (0) 2021.08.09
cook-Torrance  (0) 2020.04.08
Shadowmask lightmap  (0) 2019.02.17
Traditional subscattering  (0) 2018.03.21
Unity Sprites/Cheap Outer Glow Shader  (0) 2018.02.05