찾기
내용으로 건너뛰기
추적
문서의 이전 판을 선택했습니다!
저장하면 이 자료로 새 판을 만듭니다.
미디어 파일
======Writing vertex and fragment shaders====== ''ShaderLab'' 쉐이더는 단순히 "hardware shaders"보다 더 많이 둘러싸고 있습니다. 그들은 많은 것들을 합니다. 그들은 제재 인스펙터에서 보여지는 속성들을 설명하고 다른 그래픽 하드웨어를 위해 다수의 쉐이더 구현을 포함합니다. 그리고 정해진 함수 하드웨어 상태를 구성합니다. 꼭지점 그리고 프래그먼트 프로그램처럼 실제 프로그램이 가능한 쉐이더는 전체ShaderLab의 쉐이더 컨셉의 단지 한 부분일 뿐입니다. 기본적인 지시사항을 위해서 [[ShaderTut2|shader tutorial]]를 살펴보시기 바랍니다. 우리는 낮은 레벨의 하드웨어 ''shader programs''를 부를 것입니다. _사용자가 조명과 상호작용하는 쉐이더를 쓰기를 원한다면 [[unity:SL-SurfaceShaders|Surface Shaders]] 서류를 살펴보시기 바랍니다_. 이 페이지의 나머지 부분은Unity조명과 상호작용하지 않는 쉐이더를 가정할 것입니다 (예. 특수 효과, [[comp-ImageEffects|Image Effects]] 등.) 쉐이더 프로그램은 쉐이더 텍스트에 미리보기를 끼워넣음으로서 [[SL-Pass|Pass]] 명령안에 어딘가에 Cg / HLSL 언어로 쓰여집니다. 그들은 이것처럼 보입니다: Pass { //// ... the usual pass state setup ...// _CGPROGRAM_ //// compilation directives for this snippet, e.g.:// _#pragma vertex_ vert _#pragma fragment_ frag //// the Cg code itself// _ENDCG_ //// ... the rest of pass setup ...// } =====Cg snippets===== Cg 프로그램 미리보기는 //CGPROGRAM// 와 //ENDCG//사이에서 쓰여집니다. 미리보기의 시작에서 컴파일 지시어는 //#pragma// 문장으로 주어질 수 있습니다. Unity에 의해 인식되어지는 지시어는 다음과 같습니다: * //#pragma vertex //name''// - 함수 //name//가 꼭지점 프로그램임을 나타냅니다. * //#pragma fragment //name//// - 함수 //name//가 프래그멘트 프로그램임을 나타냅니다. * //#pragma fragmentoption //option//// - 컴파일된OpenGL 프래그먼트 프로그램에 //option//을 추가합니다. 사용가능한 옵션의 리스트를 위해서 [[http://www.opengl.org/registry/specs/ARB/fragment_program.txt|ARB fragment program]] 상세 내용을 살펴보시기 바랍니다. 이 지시어는 꼭지점 프로그램이나OpenGL이 아닌 타겟으로 컴파일된 프로그램에서는 영향을 가지지 않습니다. * //#pragma target //name//// - 어떤 쉐이더 타겟이 컴파일이 될지를 나타냅니다. 자세한 내용을 위해서 [[#target|shader targets]]를 살펴보시기 바랍니다. * //#pragma only_renderers //space separated names//// - 주어진 렌더러만을 위한 쉐이더를 컴파일합니다. 기본적으로 쉐이더는 모든 렌더러를 위해서 컴파일 됩니다. 자세한 내용을 위해서 [[#renderers|renderers]]를 살펴보시기 바랍니다. * //#pragma exclude_renderers //space separated names//// - 주어진 렌더러들을 위해서 쉐이더를 컴파일하지 않습니다. 기본적으로 쉐이더는 모든 렌더러를 위해서 컴파일 됩니다. 자세한 내용을 위해서 [[#renderers|renderers]]를 살펴보시기 바랍니다. 각각 미리보기는 꼭지점 프로그램이나 프래그먼트 프로그램 또는 둘 다를 포함해야만 합니다. 그러므로 //#pragma vertex// 또는 //#pragma fragment// 지시어가 또는 둘 다 필요되어 집니다. [[#target]] ====Shader targets==== 기본적으로 Unity는 동등한 쉐이더 모델 1.1로 꼭지점 프로그램을 컴파일하고 쉐이더 모델 2.0으로 프래그먼트 프로그램을 컴파일 합니다. //#pragma target//을 사용하는 것은 쉐이더가 다른 레벨로 컴파일 되는 것을 허락합니다. 현재 이러한 타겟들이 지원됩니다: * //#pragma target default// - 기본 타겟으로 컴파일: * Direct3D 9에서 Vertex shader 1.1 그리고 pixel shader 2.0. * 128 인스트럭션 제한을 가진 [[http://www.opengl.org/registry/specs/ARB/vertex_program.txt|ARB_vertex_program]] 그리고 96 인스트럭션 제한을 가진 [[http://www.opengl.org/registry/specs/ARB/fragment_program.txt|ARB_fragment_program]] (32 텍스쳐+ 64 산수), 16 일시적인 레지스터와 4 텍스쳐 우회. * //#pragma target 3.0// - 쉐이더 모델 3.0으로 컴파일: * Direct3D 9에서 Vertex shader 3.0 그리고 pixel shader 3.0. * 인스트럭션 제한을 가지지 않는 ARB_vertex_program 그리고1024인스트럭션 제한을 가진ARB_fragment_program (512텍스쳐+ 512산수), 32일시적인 레지스터와4 텍스쳐 우회. //#pragma profileoption// directive 지시어를 사용해서 이러한 제한을 덮어쓰는 것은 가능합니다. 예 ''#pragma profileoption MaxTexIndirections=256''은 텍스쳐 우회 제한을 256으로 올립니다. derivative 지시사항과 같은 몇몇 셰이더 모델 3.0 기능들은 ARB_vertex_program/ARB_fragment_program 에 의해 지원되지 않습니다. 당신은 제한이 덜한 GLSL로 대신 번역하기 위해 //#pragma glsl//를 사용할 수 있습니다. 3.0 타겟으로 컴파일 할 때 꼭지점과 프래그먼트 프로그램 둘 모두 존재해야 합니다. [[#renderers]] ====Renderers==== Unity는 몇몇의 렌더링APIs를 지원하고 (예. Direct3D 9 와 OpenGL), 기본적으로 모든 쉐이더 프로그램은 지원되는 렌더러를 위해서 컴파일 되어 집니다. 사용자는 어떤 렌더러가 컴파일되는지 //#pragma only_renderers// 또는 //#pragma exclude_renderers// 을 사용해서 지정할 수 있습니다. 이것은 사용자가 오직Mac OS X(Direct3D은 없습니다)만을 타겟으로 할 것이라는 것을 안다면 또는 오직Windows만을(Unity가 D3D을 기본적으로 정하는 곳에서) 또는 어떤 특별한 쉐이더만이 오직 가능하다면 매우 유용합니다. 현재 지원되는 렌더러의 이름은 다음과 같습니다: * //d3d9// - Direct3D 9. * //opengl// - OpenGL. * //gles// - OpenGL ES 2.0. * //xbox360// - Xbox 360. * //ps3// - PlayStation 3. * //flash'' - Flash. 예를 들어 이 라인은 쉐이더를D3D9 모드로 오직 컴파일 할 것입니다: #pragma only_renderers d3d9 =====Subsections===== (:tocportion:) {{tag>유니티 unity}} * 출처: [[http://unitykoreawiki.com/index.php?n=KrMain.SL-ShaderPrograms|유니티코리아위키]] (CC BY-NC-SA 2.0)
2+1?
이 필드는 비어 있도록 유지하세요:
저장
미리 보기
취소
편집 요약
참고: 이 문서를 편집하면 내용은 다음 라이선스에 따라 배포하는 데 동의하는 것으로 간주합니다:
CC Attribution-Noncommercial-Share Alike 4.0 International
연결문서
유니티3D ( Unity3D )
Built-in state variables in shader programs
ShaderLab builtin values
Using Depth Textures
ShaderLab syntax: Fog
GLSL Shader Programs
ShaderLab syntax: Color, Material, Lighting
ShaderLab syntax: Pass
Accessing shader properties in Cg
ShaderLab syntax: Texturing
2개 더 보기...
문서 도구
문서 보기
이전 판
연결문서
맨 위로
다크 모드로 보기
☀️
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