사용자 도구

사이트 도구


language:shader:shader_low_keyword

차이

문서의 선택한 두 판 사이의 차이를 보여줍니다.

차이 보기로 링크

양쪽 이전 판 이전 판
다음 판
이전 판
language:shader:shader_low_keyword [2014/06/24 16:07]
kieuns
language:shader:shader_low_keyword [2014/06/24 16:50] (현재)
kieuns [Pixel Shader]
줄 1: 줄 1:
 +
 +====== Vertex Shader ======
 +
 +<​code>​
 +// 레지스터들
 +// .이름. .R/​W/​Use. .Role.
 +// v0 ~ 입력 r 정점입력
 +// r0 ~ 임시 rw 임시보관
 +// c0 ~ 실수형 상수 r 상수
 +// b0 ~ 불형 상수 use 불값
 +// i0 ~ 정수형 상수 use 루프용 정수
 +// a0 ~ 어드레스 r/​use 4차벡터 어드레스
 +// aL 루프 카운터 use 루프카운터
 +// p0 프레디케이션 r/​use 조건분기
 +//
 +// (*) 상수는 SetVertexShaderConstantF()로 설정
 +
 +// 출력레지스터
 +// oPos w 투영좌표
 +// oD0, oD1 w 정점색
 +// oT0~0T7 w 텍스쳐좌표
 +// oFog w 포그농도
 +// oPts w 스프라이트(?​)크기
 +
 +// 설정명령
 +// vs 버젼정보
 +// dcl_usage 입력데이터선언
 +// def 상수 정의
 +// defb 불형 상수 정의
 +// defi 정수형 상수 정의
 +
 +// 산술명령
 +// nop, mov, add, sub, mul, min, max
 +// mova 정수로 형변환
 +// mad 곱하고 더함
 +// dp3 3차형 내적
 +// dp4 4차형 내적
 +// dst 거리
 +// rcp 역수
 +// rsp 역수 평방근(?​)
 +// sge 이상
 +// sit 미만
 +
 +// 매크로
 +// m3x2, m3x3, m3x4, m4x3, m4x4 행렬곱
 +// abs 절대부호
 +// sgn 부호
 +// crs 외적
 +// nrm 정규화
 +// lrp 선형보간(lerp)
 +// expp 2의지수(낮은정밀16bit)
 +// exp 2의지수(높은정밀)
 +// logp 2의로그(낮은정밀16bit)
 +// log 2의로그(높은정밀)
 +// pow 제곱
 +// sincos 사인,​코사인
 +// frc 소수부
 +</​code>​
  
 ====== Pixel Shader ====== ====== Pixel Shader ======
줄 58: 줄 116:
 </​code>​ </​code>​
  
-===== 명령 수식자 ​=====+===== 수식자(Modifiers) ===== 
 + 
 +==== 명령 수식자 ====
  
 셰이더 명령 수행 후, **레지스터에 쓰기 전에 수정** 작업<​sup>​인터럽트?</​sup>​을 한다. 셰이더 명령 수행 후, **레지스터에 쓰기 전에 수정** 작업<​sup>​인터럽트?</​sup>​을 한다.
  
-^ 명령수식자 ^+^ 명령수식자 ​                                 ^
 | {{:​language:​shader:​dx9_shader_chp4_1.png|}} | | {{:​language:​shader:​dx9_shader_chp4_1.png|}} |
-| 1개 이상을 붙여서 사용 가능 |+| 1개 이상을 붙여서 사용 가능 ​                ​|
  
 <​code>​ <​code>​
줄 75: 줄 135:
 add_x2_sat r1, r0, c0  add_x2_sat r1, r0, c0 
 </​code>​ </​code>​
 +
 +==== 레지스터 쓰기 마스크 ====
 +
 +  * 결과 값을 쓰는 성분을 선택할 수 있다. <​code>​
 +mov r0.rgb, c0
 +mov r0.a, c1</​code>​
 +  * 나열 순서를 **r, g, b, a**순으로 가야한다. **r0.argb**같은 방식은 안됨.
 +  * r,g,b,a 대신 x,y,z,w도 사용 가능
 +
 +==== 텍스쳐 레지스터 수식자(Modifiers) ====
 +
 +  2_0,2_x 에서는 모두 삭제. 뭐 그럼 필요 없는 명령 아닌가?
 +
 +  * **texld**, **texcrd** 명령을 위한 수식자
 +  * 입력 인수 수식자 : 투시변환 전의 좌표가 텍스쳐 레지스터에 입력 되었을때,​ 텍스쳐좌표로 변환하기 위해서 사용
 +
 +이해 잘 안되는데,​ 명령어를 일단 메모.
 +
 +<​code>​
 +_dz    x,y 성분을 z 성분으로 나눈다 ​  t0_dz
 +_db                                   t0_db
 +_dw    x,y 성분을 w 성분으로 나눈다 ​  t0_dw
 +_da                                   t0_da
 +</​code>​
 +
 +===== 명령어 =====
 +
 +텍스쳐 어드레싱 명령
 +
 +  HLSL이 있으니까 그냥 읽어보고만 가자. ​
 +
 +====== 상위레벨셰이더언어(HLSL) ======
language/shader/shader_low_keyword.1403593664.txt.gz · 마지막으로 수정됨: 2014/06/24 16:07 저자 kieuns