language:shader:shader_low_keyword
차이
문서의 선택한 두 판 사이의 차이를 보여줍니다.
양쪽 이전 판이전 판다음 판 | 이전 판 | ||
language:shader:shader_low_keyword [2014/06/24 16:19] – kieuns | language:shader:shader_low_keyword [2024/04/23 22:44] (현재) – 바깥 편집 127.0.0.1 | ||
---|---|---|---|
줄 1: | 줄 1: | ||
+ | ====== Vertex Shader ====== | ||
+ | |||
+ | < | ||
+ | // 레지스터들 | ||
+ | // .이름. .R/ | ||
+ | // v0 ~ 입력 r 정점입력 | ||
+ | // r0 ~ 임시 rw 임시보관 | ||
+ | // c0 ~ 실수형 상수 r 상수 | ||
+ | // b0 ~ 불형 상수 use 불값 | ||
+ | // i0 ~ 정수형 상수 use 루프용 정수 | ||
+ | // a0 ~ 어드레스 r/ | ||
+ | // aL 루프 카운터 use 루프카운터 | ||
+ | // p0 프레디케이션 r/ | ||
+ | // | ||
+ | // (*) 상수는 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 소수부 | ||
+ | </ | ||
+ | |||
+ | ====== Pixel Shader ====== | ||
+ | |||
+ | < | ||
+ | // [입력레지스터 (1_1)] | ||
+ | // v0, v1 보간된 정점색 R | ||
+ | // t0~t3 보간된 텍스쳐좌표 R/ | ||
+ | // r0~r1 임시 - 중간결과 저장 R/W | ||
+ | // c0 ~ c7 상수 - 고정소수점상수 R | ||
+ | // | ||
+ | //(*) 상수 | ||
+ | // : c? : SetPixelShaderConstant() | ||
+ | // | ||
+ | // [입력레지스터 (2_0)] | ||
+ | // v0, v1 보간된 정점색 R | ||
+ | // t0~t7 보간된 텍스쳐좌표 R/ | ||
+ | // r0~r11 임시 - 중간결과 저장 R/W | ||
+ | // c0~c31 상수 - 고정소수점상수 R | ||
+ | // s0~s15 텍스쳐읽기 R (샘플링 Status 레지스터) | ||
+ | // | ||
+ | //(*) 상수 : ' | ||
+ | // : c? : SetPixelShaderConstantF() | ||
+ | // | ||
+ | // [입력레지스터 (2_x)] | ||
+ | // v0, v1 보간된 정점색 R | ||
+ | // t0~t7 보간된 텍스쳐좌표 R/ | ||
+ | // r0~r31 임시 - 중간결과 저장 R/W | ||
+ | // c0~c223 상수 - 고정소수점상수 R | ||
+ | // s0~s15 텍스쳐읽기 R (샘플링 Status 레지스터) | ||
+ | // i0~i15 정수형상수 R | ||
+ | // b0~b15 불형상수 R | ||
+ | // aL 루프카운터 Use | ||
+ | // P 프리디케이션 R | ||
+ | // | ||
+ | //(*) 상수 : ' | ||
+ | // : c? : SetPixelShaderConstantF() | ||
+ | // : i? : SetPixelShaderConstantI() | ||
+ | // : b? : SetPixelShaderConstantB() | ||
+ | // : -1 ~ +1 값 설정 | ||
+ | // | ||
+ | // [VertexShader -> PixelShader 색 전달] | ||
+ | // | ||
+ | // VertexShader oD0 oD1 oT0, | ||
+ | // PixelShader v0 v1 t0, | ||
+ | // | ||
+ | // [출력레지스터] | ||
+ | // oC0~oC3 | ||
+ | // oDepth 깊이정보 | ||
+ | // * 번호가 작은 순서대로 출력해야 한다. | ||
+ | // * oC2에 색을 출력하려면, | ||
+ | |||
+ | // [성분] | ||
+ | // * r0 = r0.r, r0.g, r0.b, r0.a | ||
+ | // * 하나의 성분에 값을 넣고 모두 대입할 수 있다. | ||
+ | // * mov r0, c0.a // c0.a 값이 r0의 모든 성분에 대입 | ||
+ | // * 2_0에서 사용가능한 성분 | ||
+ | // * .rgba , .r, .g, .b, .a, .gbra, .brga, .abgr | ||
+ | </ | ||
+ | |||
+ | ===== 수식자(Modifiers) ===== | ||
+ | |||
+ | ==== 명령 수식자 ==== | ||
+ | |||
+ | 셰이더 명령 수행 후, **레지스터에 쓰기 전에 수정** 작업< | ||
+ | |||
+ | ^ 명령수식자 | ||
+ | | {{: | ||
+ | | 1개 이상을 붙여서 사용 가능 | ||
+ | |||
+ | < | ||
+ | add_x2 r1, r0, c0 // r1 = (r0 + c0) x 2 | ||
+ | </ | ||
+ | |||
+ | < | ||
+ | // r1 = sat((r0 + c0) * 2) | ||
+ | // sat : 0~1 사이 값으로 변경 | ||
+ | add_x2_sat r1, r0, c0 | ||
+ | </ | ||
+ | |||
+ | ==== 레지스터 쓰기 마스크 ==== | ||
+ | |||
+ | * 결과 값을 쓰는 성분을 선택할 수 있다. < | ||
+ | mov r0.rgb, c0 | ||
+ | mov r0.a, c1</ | ||
+ | * 나열 순서를 **r, g, b, a**순으로 가야한다. **r0.argb**같은 방식은 안됨. | ||
+ | * r,g,b,a 대신 x,y,z,w도 사용 가능 | ||
+ | |||
+ | ==== 텍스쳐 레지스터 수식자(Modifiers) ==== | ||
+ | |||
+ | 2_0,2_x 에서는 모두 삭제. 뭐 그럼 필요 없는 명령 아닌가? | ||
+ | |||
+ | * **texld**, **texcrd** 명령을 위한 수식자 | ||
+ | * 입력 인수 수식자 : 투시변환 전의 좌표가 텍스쳐 레지스터에 입력 되었을때, | ||
+ | |||
+ | 이해 잘 안되는데, | ||
+ | |||
+ | < | ||
+ | _dz x,y 성분을 z 성분으로 나눈다 | ||
+ | _db t0_db | ||
+ | _dw x,y 성분을 w 성분으로 나눈다 | ||
+ | _da t0_da | ||
+ | </ | ||
+ | |||
+ | ===== 명령어 ===== | ||
+ | |||
+ | 텍스쳐 어드레싱 명령 | ||
+ | |||
+ | HLSL이 있으니까 그냥 읽어보고만 가자. | ||
+ | |||
+ | ====== 상위레벨셰이더언어(HLSL) ====== |
language/shader/shader_low_keyword.txt · 마지막으로 수정됨: 2024/04/23 22:44 저자 127.0.0.1