이전 챕터까지는 어느정도 이해하고 있는데요..
지형 렌더링이 좀 어렵네요..
아무리 구글링하고 책과, 소스를 몇번씩 봐도 잘 모르는
몇가지 질문 올리겠습니다. ㅠㅠ
1. 노말,변위맵핑과는 다르게 왜 이 챕터의 지형렌더링 예제에서는 정점 정보에 Normal과 TangentU값을 주지 않는 것인가요?
2. 픽셀셰이더에서 나오는 중심차분법... 유한차분법이 문제가 좀 있어서 중심차분법을 사용한다고 적혀있는데..
유한차분법,중심차분법의 개념과 TBN기저벡터구성에 씌인 이유를 알고 싶습니다.
아무리 구글링해도... 정보를 찾기 힘드네요..ㅣㅠㅠ
3. 셰이더에서 TiledTex의 용도가 궁금합니다.
셰이더리소스배열과 관련 있는것 같은데..
그냥 생각하기에.. 각 텍셀에 맞는 셰이더리소스를 찾아 그 위치의 샘플링된 색상값을 가져오면 되는걸로 생각이 드는데요..
dout.TiledTex = dout.Tex*gTexScale;
->
// Sample layers in texture array.
float4 c0 = gLayerMapArray.Sample( samLinear, float3(pin.TiledTex, 0.0f) );
float4 c1 = gLayerMapArray.Sample( samLinear, float3(pin.TiledTex, 1.0f) );
float4 c2 = gLayerMapArray.Sample( samLinear, float3(pin.TiledTex, 2.0f) );
float4 c3 = gLayerMapArray.Sample( samLinear, float3(pin.TiledTex, 3.0f) );
float4 c4 = gLayerMapArray.Sample( samLinear, float3(pin.TiledTex, 4.0f) );
->
// Sample the blend map.
float4 t = gBlendMap.Sample( samLinear, pin.Tex );
->
// Blend the layers on top of each other.
float4 texColor = c0;
texColor = lerp(texColor, c1, t.r);
texColor = lerp(texColor, c2, t.g);
texColor = lerp(texColor, c3, t.b);
texColor = lerp(texColor, c4, t.a);
이와 같은 순서로 각 위치의 텍셀색상값을 가져오는게 이해가 잘 안되네요..
환절기 감기 조심하세요.^^
[DX11 입문 제19장] 지형 렌더링에 유한 차분법? 중심 차분법?
Moderator: 류광
....자답...
자답인데요..
1번 질문은..
처음 그리드지형(어느점이나 항상 위쪽을 향하고 셰이더에서 어짜피 다시 계산)이니 만들어 입력기에 넣어주니 당연히 노말이나 탄젠트 값이 없는것 같습니다.
3번은 아직 제가 책 뒷부분을 제대로 보지못하고 질문을 올렸네요.
다시 책 내용을 정독해 보겠습니다.
2번은.. 아직 잘 이해가 안되는데요..
한 텍셀의 양옆, 위아래를 CellSpace만큼씩 넓혀서
tangent와 bitan을 구해서 최종적으로 법선정보normalW를 구하는 것 같습니다.
gTexelCellSpaceU마큼 사이드를 넓혀서 TBN을 구하는 이유가 무엇인지..
그리고
float3 tangent = normalize(float3(2.0f*gWorldCellSpace, rightY - leftY, 0.0f));
float3 bitan = normalize(float3(0.0f, bottomY - topY, -2.0f*gWorldCellSpace));
이 계산법에 어떻게 되는건지 아직 잘 모르겠네요..
1번 질문은..
처음 그리드지형(어느점이나 항상 위쪽을 향하고 셰이더에서 어짜피 다시 계산)이니 만들어 입력기에 넣어주니 당연히 노말이나 탄젠트 값이 없는것 같습니다.
3번은 아직 제가 책 뒷부분을 제대로 보지못하고 질문을 올렸네요.
다시 책 내용을 정독해 보겠습니다.
2번은.. 아직 잘 이해가 안되는데요..
한 텍셀의 양옆, 위아래를 CellSpace만큼씩 넓혀서
tangent와 bitan을 구해서 최종적으로 법선정보normalW를 구하는 것 같습니다.
gTexelCellSpaceU마큼 사이드를 넓혀서 TBN을 구하는 이유가 무엇인지..
그리고
float3 tangent = normalize(float3(2.0f*gWorldCellSpace, rightY - leftY, 0.0f));
float3 bitan = normalize(float3(0.0f, bottomY - topY, -2.0f*gWorldCellSpace));
이 계산법에 어떻게 되는건지 아직 잘 모르겠네요..
-
- Posts: 3805
- Joined: 2001-07-25 09:00
- Location: GPGstudy
- Contact:
-
- Posts: 3805
- Joined: 2001-07-25 09:00
- Location: GPGstudy
- Contact: