찾기
내용으로 건너뛰기
추적
문서의 이전 판을 선택했습니다!
저장하면 이 자료로 새 판을 만듭니다.
미디어 파일
======ShaderLab syntax: Texturing====== 기본 꼭지점 조명이 계산되어진 후에 텍스쳐가 적용됩니다. ShaderLab에서 이것은 _SetTexture_ 명령을 사용해서 행해집니다. [[unity:SL-ShaderPrograms|fragment programs]]이 사용될 때 SetTexture 명령은 어떠한 효과도 가지지 않습니다; 이 경우에서 처럼 픽셀 오퍼레이션은 쉐이더에서 완전히 설명됩니다. {{:unity3d:SL/PipelineFFP.png}} 텍스쳐링은 오래된 스타일 결합 효과를 하는 곳입니다. 사용자는 패스안에서 다수의SetTexture 명령을 가질 수 있습니다 - 페인팅 프로그램의 레이어처럼 모든 텍스쳐가 차례로 적용됩니다. SetTexture 명령은 [[SL-Pass|Pass]] 끝에 놓여져야만 합니다. =====Syntax===== :_SetTexture_ //[TexturePropertyName]// _{_ //Texture Block// _}_: 텍스쳐를 지정합니다. //TextureName// 은 텍스쳐 속성으로서 정의되어야 합니다. 텍스쳐를 적용하는 방법은 //TextureBlock//안에서 정의됩니다. 텍스쳐 블록은 텍스쳐가 어떻게 적용되는지를 조절합니다. 텍스쳐 블록 안에는 세 개의 명령이 있을 수 있습니다: ''combine'', ''matrix'' 그리고 ''constantColor''. =====Texture block ''combine'' command===== :''combine'' //src1// * //src2//: src1과src2를 함께 곱합니다. 결과는 입력값보다 더 어두울 것입니다. :''combine'' //src1// + //src2//: src1과src2를 함께 더합니다. 결과는 입력값보다 더 밝을 것입니다. :''combine'' //src1// - //src2//: src1에서 src2를 뺍니다. :''combine'' //src1// +- //src2//: src1과src2를 함께 더하고나서 0.5를 뺍니다 (부호가 적용되는 덧셈). :''combine'' //src1// ''lerp'' (//src2//) //src3//: src2의 알파를 사용해서 src3와src1 사이에서 보간합니다. 보간은 반대 방향임을 주의하시기 바랍니다: 알파가 1일 때src1가 사용되고 알파가 0일 때src3에서 사용됩니다. :''combine'' //src1// * //src2// + //src3//: src1을src2의 알파 컴포넌트에 곱하고 나서 src3을 더합니다. :''combine'' //src1// * //src2// +- //src3//: src1을src2의 알파 컴포넌트에 곱하고 나서src3과 함께 부호를 적용하는 덧셈을 합니다. :''combine'' //src1// * //src2// - //src3//: src1을src2의 알파 컴포넌트에 곱하고 나서src3을 뺍니다. 모든 _src_ 속성들은 //previous//, //constant//, //primary// 또는 //texture// 중의 하나일 수 있습니다. * _Previous_ 는 이전 SetTexture의 결과입니다. * _Primary_ 는 [[SL-Material|lighting calculation]] 로부터의 색상이거나 또는 그것이 [[SL-BindChannels|bound]] 되어지면 꼭지점 색상입니다. * _Texture_ 는SetTexture에서 //[TextureName]// 에서 지정된 텍스쳐의 색상입니다 (위를 참고하세요). * _Constant_ 는 _ConstantColor_에서 지정된 색상입니다. Modifiers: * 위에서 지정된 공식은 색상을 2배 또는 4배 더 밝게 만들기 위해서 _Double_ 또는 _Quad_ 키워드에 의해 선택적으로 따라질 수 있습니다. * ''lerp'' 아규먼트를 제외하고 모든 _src_ 속성들은 선택적으로 _one -_ 에 의해서 선택적으로 진행될 수 있습니다 – 결과 색상을 차감되게 하기 위해서. * 모든 _src_ 속성들은 오직 알파 채널을 취하기 위해서 _alpha_ 에 의해서 따라질 수 있습니다. =====Texture block ''constantColor'' command===== :_ConstantColor_ //color//: 결합된 명령에서 사용될 수 있는 상수 색을 정의합니다. =====Texture block ''matrix'' command===== :_matrix_ //[MatrixPropertyName]//: 주어진 매트릭스와 함께 이 명령에서 사용된 변형 텍스쳐 좌표. =====Details===== 오래된 그래픽 카드는 텍스쳐에 층을 이루는 방법을 사용합니다. 텍스쳐는 스크린으로 쓰여질 색상을 바꾸면서 각각 이후에 적용된 것입니다. 각 텍스쳐를 위해서 텍스쳐는 일반적으로 이전 오퍼레이션의 결과와 함께 결합됩니다. {{:unity3d:SL./SetTextureGraph.png}} ====Separate Alpha & Color blending==== 기본적으로, 결합 공식은RGB와 색상settexture의 알파 컴포넌트 둘 다를 계산하기 위해서 사용됩니다. 선택적으로 사용자는 알파 계산을 위해서 별개의 공식을 지정할 수 있습니다. 이것은 다음과 같습니다: <file csharp>SetTexture [_MainTex] { combine previous * texture, previous + texture } </file> 여기서 우리는RGB 색을 곱하고 알파를 더합니다. ====Specular highlights==== 기본적으로 _primary_ 색은 확산, 주변의 그리고 반사적인 색상의 합입니다 ([[SL-Material|Lighting calculation]] 에서 정의된 것처럼). 사용자가 패스 옵션에서 _SeparateSpecular On_ 을 지정한다면 반사적인 색상은 이전 보다는 결합 계산 후에 반사적인 색상이 더해질 것입니다. 이것은 내장된 정점 조명 쉐이더의 기본적인 기능입니다. ====Graphics hardware support==== 오래된 그래픽 카드는 텍스쳐 결합 모드를 지원하지 않을지도 모르고 다른 카드는 가능한SetTexture 스테이지의 다른 숫자를 가집니다. 쉐이더 작가는 그 또는 그녀가 지원하고 싶은 카드를 위해서 별개의 [[unity:SL-SubShader|SubShaders]]를 써야 합니다. 픽셀 쉐이더1.1을 가지는 그래픽 카드는(NVIDIA GeForce 3 and up, ATI Radeon 8500 and up, Intel 9xx) 모든 결합 모드를 지원하고 적어도 4개의 가능한 스테이지를 가집니다. 다음의 테이블은 하드웨어 지원을 요약하고 있습니다: |_Card_ |_Stage count_ |_Combiner modes //not// supported_ | |NVIDIA GeForce 3/4Ti and up |4 |Windows 위의 OpenGL에서 ''src1*src2-src3''가 지원되지 않습니다 | |NVIDIA TNT2, GeForce 256, GeForce 2, GeForce 4MX |2 |Windows 위의 OpenGL에서 ''src1*src2-src3''가 지원되지 않습니다 | |ATI Radeon 9500 and up |4-8 |OpenGL에서 8, D3D9에서 4| |ATI Radeon 8500-9250 |4-6 |OpenGL에서 6, D3D9에서 4| |ATI Radeon 7500 |3 | | |ATI Rage |2 |''src1*src2+src3'' [[:<<]] ''src1*src2+-src3'' [[:<<]] ''src1*src2-src3'' | =====Examples===== ====Alpha Blending Two Textures==== 이 작은 예들은 두 개의 텍스쳐를 취합니다. 첫째로 그것은 __MainTex_를 위하기 위해서 첫 번째 결합을 세팅하고 나서 __BlendTex_의RGB 색상에서 바래지게 하기 위한 __BlendTex_의 알파 채널을 사용합니다. <file csharp>Shader "Examples/2 Alpha Blended Textures" { Properties { _MainTex ("Base (RGB)", 2D) = "white" {} _BlendTex ("Alpha Blended (RGBA) ", 2D) = "white" {} } SubShader { Pass { // Apply base texture SetTexture [_MainTex] { combine texture } // Blend in the alpha texture using the lerp operator SetTexture [_BlendTex] { combine texture lerp (texture) previous } } } } </file> ====Alpha Controlled Self-illumination==== 이 쉐이더는 조명이 어디에 적용되는지를 결정하기 위해서 __MainTex_의 알파 컴포넌트를 사용합니다. 그것은 두 개의 스테이지들로 텍스쳐를 적용하는 것에 의해 이것을 합니다; 첫 번째 스테이지에서 텍스쳐의 알파 값은 꼭지점 색상과 온전한 하얀색 사이에서 혼합하기 위해서 사용됩니다. 두 번째 스테이지에서 텍스쳐의RGB 값은 곱해집니다. <file csharp>Shader "Examples/Self-Illumination" { Properties { _MainTex ("Base (RGB) Self-Illumination (A)", 2D) = "white" {} } SubShader { Pass { // Set up basic white vertex lighting Material { Diffuse (1,1,1,1) Ambient (1,1,1,1) } Lighting On // Use texture alpha to blend up to white (= full illumination) SetTexture [_MainTex] { constantColor (1,1,1,1) combine constant lerp(texture) previous } // Multiply in texture SetTexture [_MainTex] { combine previous * texture } } } } </file> 우리는 여기서 무료로 어떤 것들을 할 수 있브니다, 그러나 온전하 하얀색과 혼합하는 대신에 우리는 자가 조명 색상을 더하고 그것에 혼합합니다. 속성으로부터 텍스쳐 블렌딩으로 SolidColor을 얻기 위한 _ConstantColor_의 사용을 참고하시기 바랍니다. <file csharp>Shader "Examples/Self-Illumination 2" { Properties { _IlluminCol ("Self-Illumination color (RGB)", Color) = (1,1,1,1) _MainTex ("Base (RGB) Self-Illumination (A)", 2D) = "white" {} } SubShader { Pass { // Set up basic white vertex lighting Material { Diffuse (1,1,1,1) Ambient (1,1,1,1) } Lighting On // Use texture alpha to blend up to white (= full illumination) SetTexture [_MainTex] { // Pull the color property into this blender constantColor [_IlluminCol] // And use the texture's alpha to blend between it and // vertex color combine constant lerp(texture) previous } // Multiply in texture SetTexture [_MainTex] { combine previous * texture } } } } </file> 그리고 마지막으로 우리는 정점 조명의 모든 정점 조명의 속성을 취하고 그것들을 줄입니다: <file csharp>Shader "Examples/Self-Illumination 3" { Properties { _IlluminCol ("Self-Illumination color (RGB)", Color) = (1,1,1,1) _Color ("Main Color", Color) = (1,1,1,0) _SpecColor ("Spec Color", Color) = (1,1,1,1) _Emission ("Emmisive Color", Color) = (0,0,0,0) _Shininess ("Shininess", Range (0.01, 1)) = 0.7 _MainTex ("Base (RGB)", 2D) = "white" {} } SubShader { Pass { // Set up basic vertex lighting Material { Diffuse [_Color] Ambient [_Color] Shininess [_Shininess] Specular [_SpecColor] Emission [_Emission] } Lighting On // Use texture alpha to blend up to white (= full illumination) SetTexture [_MainTex] { constantColor [_IlluminCol] combine constant lerp(texture) previous } // Multiply in texture SetTexture [_MainTex] { combine previous * texture } } } } </file> {{tag>유니티 unity}} * 출처: [[http://unitykoreawiki.com/index.php?n=KrMain.SL-SetTexture|유니티코리아위키]] (CC BY-NC-SA 2.0)
2+1?
이 필드는 비어 있도록 유지하세요:
저장
미리 보기
취소
편집 요약
참고: 이 문서를 편집하면 내용은 다음 라이선스에 따라 배포하는 데 동의하는 것으로 간주합니다:
CC Attribution-Noncommercial-Share Alike 4.0 International
연결문서
유니티3D ( Unity3D )
Shaders: ShaderLab & 고정함수 쉐이더
ShaderLab syntax: Pass
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