본문 바로가기

전체 글

헤어 랜더링 헤어 랜더링을 하면서 가장 중요한것은 탄젠트값을 구하는것이다.. 달의 목소리님 블로그에서 퍼옴 Hair Lighting 모델과 일반 적인 Lighting 모델의 가장 큰 차이 점은 Normal대신에 Tangent를 쓴다는 점입니다.즉, Hair을 Strand ( 머리카락 한 올 )의 집합채로 보고, Vertex 를 그 구성원으로 보았을때, Lighting 계산을 Normal이 아니라머리결을 따라 가는 Tangent를 쓰는 것이죠. 제가 가장 헷갈렸던 부분이 이곳이었습니다. Normal Map을 사용하기 위해서 Tangent Space에 이용할 Tangent값은 Mirror되는 값에 따라 중간 단계가 엄청나게 차이가 납니다. 즉, 여기서 말하는 Hair Tangent라는 것은 Normal map에 사용하는.. 더보기
Radiosity Normal Mapping 이것이 라이트맵 하프라이트에서는 3장쓴다 이것은 노말맵... 일반적인 노말 둘을 합치면 이런식의 결과가 나온다.. 공식은 이거... lightmapColor[0] * dot( bumpBasis[0], normal )+ lightmapColor[1] * dot( bumpBasis[1], normal )+ lightmapColor[2] * dot( bumpBasis[2], normal ) 마법의 코드.... bumpbasis는 위의 공식이다. 적용해본 결과 일단은 약간은 노말이 산다... 그리고 라이트맵으로 약간 뭉개진 화면을 보정해주는거 같음 더 선명하게... 참조 문서 Shading in Valve’s Source Engine Advanced Real-Time Rendering in 3D Graphics.. 더보기
Light Pre Pass 변형 랜더링 정확하게 맞는지는 모르겠지만... 라이트 프리 패스에서.. 메쉬의 colorkey 처리를 하기위해서.. MRT를 썼는데 1 depth (알파에는 칼라키) 2 normal + speclur 3 lightmap 일단 3장 썼는데... 원래대로면 라이트 프리패스면 normal + depth만 뽑지만 inferred 를 연구하다가 뭐... 어짜피 고사양이라면 괜찮겠지 하고... 썼다.. 일단 mrt가 1장 남지만 4장에 머트리얼 패스를 추가해서 1 depth (알파에는 칼라키) 2 normal + speclur 3 lightmap (glow) 4 material ( 메탈, specpower, motion vector) 아니면 1 motion vectors (알파에는 칼라키) 2 normal + depth 3 l.. 더보기
EarlyZ 기억하자 1pass ZEnable = True; ZWriteEnable = True; ZFunc = LessEqual; 2pass ZEnable = True; ZWriteEnable = False; ZFunc = Equal; 1장은 depth로 뽑느다!! 더보기
Deferred Shading, LightPrePass, Inferred Lighting 지연 랜더링에 대해서.... 몇달 동안 고민하던 문제를.... 너무 초보적인 문제일수도 있구 아닌수도 있다. MRT가 모지란 궁금증에서 출발해서... 킬존 2 보면서... 여러가지 생각했다.. 흠.... 답은 가까이 있었지만... 구현이 문제다... 일단 deferred 를 생각했다... 이리저리 자료를 찾아서... 어느정도는 구현을 해봤다... 하지만 알파블랜딩... + 멀티 머트리얼... 문제... 그리고 넘어갔다 lighr pre pass... 오호 이건 dx8에서도 된다구 그러구... 한장에 라이트랑 뎁스랑만 뽑아서 라이트만 미리 계산하구 덮어주는 방식 ㅎㅎ 오... 이거 짱좋다 그랬는데... MRT는 안써서 고사양에서는 별로라구 하니까... 흠.... 모든걸 해결해줄거 같았던 Inferred L.. 더보기
코딩하기 좋은 폰트?? 이거 좀 괜찮다고 생각 더보기
구조적과 절차적... 항상 생각하는 프로그래머 언제나 처음부터... 앞이 없으면 뒤도 없잖아! 그런 이치를... 더보기
이번에 산 책들... Refactoring 리팩토링 : 나쁜 디자인의 코드를 좋은 디자인으로 바꾸는 방법 똑똑한 프로그래밍을 위한 C++ 템플릿 가이드 올해의 프로그래머로써의 목표는!! 습관! 그리고 성장! 새로운 프로젝트를 만든다! 그리고 일단 내맘대로 짠다! 어느정도 완성했을때 패턴을 사용한다! 리팩토링과 같이... (그럼 일단 사전에 책을 다 읽어야 겠지.. ) 그리고.. 템플릿... 일단 좋던 안좋던... 사용해본다. 사용을 해 보지 않았기 때문에... (복사해서 쓴 기억만...) 올해는 3D보다는 C++에 치중해서 내가 추구하는 더욱 더 간결하고 보기 좋은... 아주 쉬운 코드를 만들어 보자! 더보기