찾기
내용으로 건너뛰기
추적
문서의 이전 판을 선택했습니다!
저장하면 이 자료로 새 판을 만듭니다.
미디어 파일
======Performance Tips when Writing Shaders====== =====Use Common sense ;)===== 사용자가 필요한 것들만 계산합니다; 실제로 필요하지 않은 것들은 제거될 수 있습니다. 예를 들어 재질당 색상을 지원하는 것은 쉐이더를 좀 더 융통성있게 만들기에 좋으나 만약 사용자가 항상 그 색을 흰 색으로 세팅한다면 그것은 스크린에 그려지는 꼭지점 또는 픽셀을 위해서 수행되어지는 쓸모없는 계산이 됩니다. 또 다른 기억해야하는 한 가지는 계산의 빈도수 입니다. 보통 꼭지점들이 있는 것(정점 쉐이더 실행)보다 더 많은 픽셀이 그려집니다 (그러므로 그들의 픽셀 쉐이더가 실행됩니다); 그리고 그려지는 물체보다 더 많은 꼭지점들이. 그래서 일반적으로 사용자가 할 수 있다면 픽셀 쉐이더를 정점 쉐이더로 계산을 움직이고 또는 쉐이더들로 완전히 움직이고 스크립트로부터 값을 한 번에 세팅합니다. =====Less Generic Surface Shaders===== [[unity:SL-SurfaceShaders|Surface Shaders]]는 조명과 상호작용하는 쉐이더를 쓰기 위해 훌륭합니다. 그러나 그들의 기본적인 옵션은 일반적인 케이스를 위한 것입니다. 많은 경우에 사용자는 쉐이더들을 더욱 빠르게 또는 적어도 더 적게 실행하기 위해서 그들을 조절할 수 있습니다: * 뷰 디렉션을 사용하는 쉐이더를 위한 ''approxview'' 디렉티브는 뷰 디렉션을 픽셀당 하는 것 대신에 일반화된 정점당 하는 것으로 만들 것입니다. 이것은 대략적이나 자주 충분히 좋습니다. * Specular 쉐이더 타입을 위한 ''halfasview''은 훨씬 빠릅니다. Half-vector(조명 방향과 뷰 벡터 사이의 중간)는 정점당 계산될 것이고 일반화될 것입니다. 그리고[[unity:SL-SurfaceShaderLighting|lighting function]]은 뷰 벡터 대신에 하나의 파라미터로서half-vector를 이미 받을 것입니다. * ''noforwardadd''은 Forward 렌더링에서 하나의 쉐이더를 오직 하나의 방향성 있는 조명만을 지원하도록 만들 것입니다. 나머지 조명은 여전히 정점당 조명 또는 주변의 하모니로서 영향을 가질 수 있습니다. 이것은 심지어 다수의 조명이 있음에도 쉐이더를 더 적게 만들고 그것인 항상 한 번의 패스에서 렌더된다는 것을 확인하기에 좋습니다. * ''noambient''은 주변의 조명과 쉐이더 위의 조화를 이루는 조명을 비활성화 할 것입니다. 이것은 약간 더 빠를 수 있습니다. =====Precision of computations===== Cg/HLSL에서 쉐이더를 쓸 때, 3 가지의 기본 숫자 타입이 있습니다: ''float'', ''half'' 그리고 ''fixed'' (vector & 그들의 matrix 변형 뿐만 아니라, 예. half3와float4x4): * ''float'': 고도로 정밀한 부동 소수점. 일반적으로32 비트, 보통의 프로그래밍 언어에서 float 타입처럼. * ''half'': 중간 정도로 정밀한 부동 소수점. 일반적으로16 비트, -60000 과 +60000 사이이고 3.3 정확도의 자릿수. * ''fixed'': 낮은 정도로 정밀한 부동 소수점. 일반적으로11 비트, -2.0과 +2.0사이이고1/256정확도. 가능한 가장 낮은 정확도를 사용하세요; 이것은iOS 그리고Android같은 모바일 플랫폼에서는 특별히 중요합니다. 중요한 규칙입니다: * 색상과 유닛 벡터를 위해서 ''fixed''를 사용하세요 * 다른 것들을 위해서 만약 범위와 정확도가 좋다면 ''half''를 사용하시고 그렇지 않다면 ''float''를 사용하세요. 모바일 플랫폼에서 키는 프래그먼트 쉐이더에서 낮은 정확도에서 가능한한 오래 머무르도록 확실시 하는 것입니다. 대부분의GPUs에서 스위즐을 낮은 정확도(fixed/lowp)타입으로 적용하는 것은 비용이 듭니다; fixed/lowp와 더 높은 정확도 타입으로 바꾸는 것도 역시 꽤 비용이 많이 듭니다. =====Alpha Testing===== 고정된 함수 [[SL-AlphaTest|AlphaTest]] 또는 프로그래밍 할 수 있는 동일한clip()은 다른 플랫폼에서 다른 성능적인 특징들을 가집니다: * 일반적으로 그것을 대부분의 플랫폼에서 완전히 투명한 픽셀을 잘라내기 위해서 사용하는 것은 작은 장점입니다. * 그러나iOS 에서 발견된 PowerVR GPUs와 다른 Android 디바이스들에서 알파 테스팅은 비용이 많이 듭니다. 그것을 성능 최적화로서 사용하지 마시기 바랍니다. 그것은 더욱 느리게 할 것입니다. =====Color Mask===== 플랫폼들에서 (주로iOS와Android 디바이스에서 발견되는 모바일GPUs) 어떤 채널(e.g. ''ColorMask RGB'')들을 남겨두기 위해 [[SL-Pass|ColorMask]]를 사용하는 것은 비용이 많이 들 수 있으므로 오직 그것을 정말로 필요할 때만 사용하시기 바랍니다. {{tag>유니티 unity}} * 출처: [[http://unitykoreawiki.com/index.php?n=KrMain.SL-ShaderPerformance|유니티코리아위키]] (CC BY-NC-SA 2.0)
2+1?
이 필드는 비어 있도록 유지하세요:
저장
미리 보기
취소
편집 요약
참고: 이 문서를 편집하면 내용은 다음 라이선스에 따라 배포하는 데 동의하는 것으로 간주합니다:
CC Attribution-Noncommercial-Share Alike 4.0 International
연결문서
유니티3D ( Unity3D )
그래픽 성능 최적화
Performance of Unity shaders
Advanced ShaderLab topics
Reference Manual
문서 도구
문서 보기
이전 판
연결문서
맨 위로
다크 모드로 보기
☀️
Toggle Menu
유니티3D ( Unity3D )
너두 고쳐두 됩니다.
사이트 도구
최근 바뀜
미디어 관리자
사이트맵
사용자 도구
등록
로긴
최근 수정된 문서
misuse_topical5
노박
unique_items
dinner_bell
deputy_beagle
ratslayer
one_for_my_baby
alerio
power_fist
제거됨
fixer
climb_ev_ry_mountain
companion
[장비 분실]
crashed_vertibird
brotherhood_t-51b_power_armor
marco
i_forgot_to_remember_to_forget
cateye