Your SlideShare is downloading. ×
게임 개발을 위한 렌더링 기법   한성환
게임 개발을 위한 렌더링 기법   한성환
게임 개발을 위한 렌더링 기법   한성환
게임 개발을 위한 렌더링 기법   한성환
게임 개발을 위한 렌더링 기법   한성환
게임 개발을 위한 렌더링 기법   한성환
게임 개발을 위한 렌더링 기법   한성환
게임 개발을 위한 렌더링 기법   한성환
게임 개발을 위한 렌더링 기법   한성환
게임 개발을 위한 렌더링 기법   한성환
게임 개발을 위한 렌더링 기법   한성환
게임 개발을 위한 렌더링 기법   한성환
게임 개발을 위한 렌더링 기법   한성환
게임 개발을 위한 렌더링 기법   한성환
게임 개발을 위한 렌더링 기법   한성환
게임 개발을 위한 렌더링 기법   한성환
게임 개발을 위한 렌더링 기법   한성환
게임 개발을 위한 렌더링 기법   한성환
게임 개발을 위한 렌더링 기법   한성환
게임 개발을 위한 렌더링 기법   한성환
게임 개발을 위한 렌더링 기법   한성환
게임 개발을 위한 렌더링 기법   한성환
게임 개발을 위한 렌더링 기법   한성환
게임 개발을 위한 렌더링 기법   한성환
게임 개발을 위한 렌더링 기법   한성환
게임 개발을 위한 렌더링 기법   한성환
게임 개발을 위한 렌더링 기법   한성환
게임 개발을 위한 렌더링 기법   한성환
게임 개발을 위한 렌더링 기법   한성환
게임 개발을 위한 렌더링 기법   한성환
게임 개발을 위한 렌더링 기법   한성환
게임 개발을 위한 렌더링 기법   한성환
게임 개발을 위한 렌더링 기법   한성환
게임 개발을 위한 렌더링 기법   한성환
게임 개발을 위한 렌더링 기법   한성환
게임 개발을 위한 렌더링 기법   한성환
게임 개발을 위한 렌더링 기법   한성환
게임 개발을 위한 렌더링 기법   한성환
게임 개발을 위한 렌더링 기법   한성환
게임 개발을 위한 렌더링 기법   한성환
게임 개발을 위한 렌더링 기법   한성환
게임 개발을 위한 렌더링 기법   한성환
게임 개발을 위한 렌더링 기법   한성환
게임 개발을 위한 렌더링 기법   한성환
게임 개발을 위한 렌더링 기법   한성환
게임 개발을 위한 렌더링 기법   한성환
게임 개발을 위한 렌더링 기법   한성환
게임 개발을 위한 렌더링 기법   한성환
게임 개발을 위한 렌더링 기법   한성환
게임 개발을 위한 렌더링 기법   한성환
게임 개발을 위한 렌더링 기법   한성환
게임 개발을 위한 렌더링 기법   한성환
게임 개발을 위한 렌더링 기법   한성환
게임 개발을 위한 렌더링 기법   한성환
게임 개발을 위한 렌더링 기법   한성환
게임 개발을 위한 렌더링 기법   한성환
게임 개발을 위한 렌더링 기법   한성환
게임 개발을 위한 렌더링 기법   한성환
게임 개발을 위한 렌더링 기법   한성환
게임 개발을 위한 렌더링 기법   한성환
게임 개발을 위한 렌더링 기법   한성환
게임 개발을 위한 렌더링 기법   한성환
게임 개발을 위한 렌더링 기법   한성환
게임 개발을 위한 렌더링 기법   한성환
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

게임 개발을 위한 렌더링 기법 한성환

3,920

Published on

Published in: Technology, Art & Photos
0 Comments
9 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
3,920
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
57
Comments
0
Likes
9
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. 게임 개발을 위한 렌더링 기법
    민커뮤니케이션
    MAD팀 한성환
    2010.05.26
  • 2. 목차
    Shading
    Base Rendering
    Advanced Rendering
    렌더링 관련 최적화
  • 3. Shading
    Flat Shading
    Gouraud Shading
    Phong Shading
  • 4. Flat Shading
  • 5. Flat Shading
  • 6. Gouraud Shading
  • 7. Phong Shading
  • 8. 목차
    Shading
    Base Rendering
    Advanced Rendering
    렌더링 관련 최적화
  • 9. Base Rendering(Gouraud Shading)
    Feature (특징)
    Diffuse
    Specular
    장단점
  • 10. Feature(Gouraud Shading)
    점단위의Color 계산
    두점 사이의 컬러값 선형보간
  • 11. Diffuse
    점의 Normal 방향
    Light 방향
    내적
    Material Diffuse
    Light Diffuse
  • 12. Diffuse 문제
    Light Diffuse Color ( 255, 255, 0 )
    Material Diffuse Color ( 0, 0, 255 )
    무슨 컬러가 나올까요~?
    LightDiffuse * MaterialDiffuse * 내적(Normal,LightDir)
    R = 255 * 0 * 내적수치;
    G = 255 * 0 * 내적수치;
    B = 0 * 255 * 내적수치;
    Color( R, G, B ) -> Color( 0, 0, 0 )
  • 13. Specular
    점의 Normal 방향
    Light 방향
    캐릭터 시점
    Half Vector
    내적 ( Half, Normal )
  • 14. Base Rendering 장단점
    작업이 쉽다.
    모든 그래픽 카드에 지원이 가능하다.
    퀄리티가 부족하다.
    장점
    단점
  • 15. Base Rendering의 보완책은…
    Phong Shading
    Specular는 점단위에 의지 하지 않도록 작업
  • 16. Pixel Shader 1.4 = Phong Shading
    우리에게 필요한 것은~!!
    Normalize()
    Pixel 단위 Normal 수치 선형 보간
    Phong Shading은 Pixel Shader 2.0이상 부터 지원
  • 17. 목차
    Shading
    Base Rendering
    Advanced Rendering
    렌더링 관련 최적화
  • 18. Advanced Rendering
    Environment Mapping
    - Sphere Mapping
    - Cube Mapping
    Toon Shading
    Edge Rendering
    Rim Lighting
    Glow
    Fur Rendering
    T&L에 있는 것 전부
    NormalMap
    T&L
    Shader
  • 19. Sphere Mapping #1
  • 20. SphereMapping #2
    카메라 시점
    Vertex의 Normal
    TEXTURETRANSFORMFLAGS
    - D3DTSS_TCI_CAMERASPACENORMAL
    - Normal (-1~1) -> UV (-1~1)
    텍스쳐 행렬
    - D3DTS_TEXTURE0
    - UV (-1~1) -> UV (0~1)
    x = ( (x) * 0.5 + 0.5 );
    y = ( -(y) * 0.5 + 0.5 );
    0.0, 1.0
    0.5, 1.5
    0.7, 0.7
    0.85, 0.15
    0.0, 0.5
    0.5, 0.75
    0.35, 0.35
    0.67, 0.67
    1.0, 0.0
    0.0, 0.0
    0.5, 0.0
    -1.0, 0.0
    0.5, 0.5
    0.75, 0.5
    1.0, 0.5
    0.0, 0.5
    0.0, -1.0
    0.5, 0.0
  • 21. Advanced Rendering
    Environment Mapping
    - Sphere Mapping
    - Cube Mapping
    Toon Shading
    Edge Rendering
    Rim Lighting
    Glow
    Fur Rendering
    T&L에 있는 것 전부
    NormalMap
    T&L
    Shader
  • 22. RimLight #1 ( SphereMapping )
  • 23. RimLight #2
  • 24. RimLight원리 ( T&L용 )
    카메라 공간에서의 Normal 수치를 가지고 텍스쳐를 입힘
    Sphere Mapping
    Sphere Texture 를 조작
    D3DTSS_COLOROP 는 D3DTOP_ADD 사용
  • 25. Advanced Rendering
    Environment Mapping
    - Sphere Mapping
    - Cube Mapping
    Toon Shading
    Edge Rendering
    Rim Lighting
    Glow
    Fur Rendering
    T&L에 있는 것 전부
    NormalMap
    T&L
    Shader
  • 26. Cube Mapping #1
  • 27. Cube Mapping #2
    Sphere Mapping과 비교
    왜곡 현상이 덜 하다.
    여러방향에서Environment mapping을 볼수 있다.
    (하지만 시각적으로 인지하기 어려움.)
  • 28. Cube Mapping #3
    Sphere Mapping과 비교
  • 29. Cube Mapping #4
    Sphere Mapping과 비교
    왜곡 현상이 덜 하다.
    여러방향에서Environment mapping을 볼수 있다.
    Texture Size가 크다.
    실시간으로 만드는 것이 비교적 쉽다.
    (하지만 시각적으로 인지하기 어려움.)
  • 30. Cube Mapping #5
    실시간 생성
  • 31. Advanced Rendering
    Environment Mapping
    - Sphere Mapping
    - Cube Mapping
    Toon Shading
    Edge Rendering
    Rim Lighting
    Glow
    Fur Rendering
    T&L에 있는 것 전부
    NormalMap
    T&L
    Shader
  • 32. Toon Shading #1
    Light 방향
    Vertex의 Normal
    TEXTURETRANSFORMFLAGS
    - D3DTSS_TCI_CAMERASPACENORMAL
    텍스쳐 행렬
    - D3DTS_TEXTURE0
  • 33. Toon Shading #2
  • 34. Toon Shading #3
    T&L의 Texture방식의 Feature
    - Shading 용 텍스쳐로 여러 느낌가능.
    - Diffuse Color를 Phong Shading 비슷하게 할 수 있음.
    - Phong Shading느낌의Specular는 불가능
    - Line이 곡선이 아닌 직선으로 생김
  • 35. Advanced Rendering
    Environment Mapping
    - Sphere Mapping
    - Cube Mapping
    Toon Shading
    Edge Rendering
    Rim Lighting
    Glow
    Fur Rendering
    T&L에 있는 것 전부
    NormalMap
    T&L
    Shader
  • 36. Edge Rendering #1
    종류
    One Pixel 짜리 선 생성
    메쉬 내부에서 선 생성
    메쉬 외부에서 생성되는 외각선
    Pixel Shader를 사용하여 Pixel에 기입
  • 37. Edge Rendering #2
    One Pixel 선 생성
    메쉬 내부에서 선 생성
    (Silhouette Edge Rendering)
    Sphere Mapping 응용
    RimLight와 반대되는 Image를 사용함.
    WIREFRAME Render
    Z bias
    Anti-Aliasing
  • 38. Edge Rendering #3
    Surface Angle Silhouetting
  • 39. Edge Rendering #4
    메쉬 외부에서 선 생성
    Normal 방향으로 스케일된Mesh를 Render
    미리 계산된 Normal Mesh를 생성
    Mesh 생성시 정점을 Merge 시켜줌
  • 40. Edge Rendering #5
    NormalMesh를 그대로 사용할 경우 문제점
    같은 위치에 있는 점이지만 Merge 되어 있지 않은 상태
    (노멀값이 다른 상태)
  • 41. Edge Rendering #6
    Pixel Shader를 이용
    Laplician Filter
    - ColorBuffer
    - Z Buffer
    - Normalmap
  • 42. Advanced Rendering
    Environment Mapping
    - Sphere Mapping
    - Cube Mapping
    Toon Shading
    Edge Rendering
    Rim Lighting
    Glow
    Fur Rendering
    T&L에 있는 것 전부
    NormalMap
    T&L
    Shader
  • 43. Glow #1
    좌우로 늘린 후 상하로 늘린다.
    GPU부하와 Quality
    Texture Size
    Pixel Move Count
    - 512
    - 3칸
  • 44. Glow #2
  • 45. Glow #3
  • 46. Advanced Rendering
    Environment Mapping
    - Sphere Mapping
    - Cube Mapping
    Toon Shading
    Edge Rendering
    Rim Lighting
    Glow
    Fur Rendering
    T&L에 있는 것 전부
    NormalMap
    T&L
    Shader
  • 47. Fur Rendering #1
    구현 방법
    예제) 완다와 거상
    ALPHA TEST
    여러층의Mesh
  • 48. Fur Rendering #2
    단점
    면을 평평한 각도로 보면 어색함이 표시
    추가 Rendering 필요.
    값 비싼 Alpha Test 필요
  • 49. Advanced Rendering
    Environment Mapping
    - Sphere Mapping
    - Cube Mapping
    Toon Shading
    Edge Rendering
    Rim Lighting
    Glow
    Fur Rendering
    T&L에 있는 것 전부
    NormalMap
    T&L
    Shader
  • 50. NormalMap #1
    Use Shader
    High Quality
    Graphic Card의 가격하락과 성능향상
    ( Pixel Shader지원 카드 대중화 )
    Specular하나만으로도 충분한 효과 발휘
  • 51. NormalMap #2
  • 52. Advanced Rendering
    Environment Mapping
    - Sphere Mapping
    - Cube Mapping
    Toon Shading
    Edge Rendering
    Rim Lighting
    Glow
    Fur Rendering
    T&L에 있는 것 전부
    NormalMap
    메르메르에서 쓰이는 연마효과
    T&L
    Shader
  • 53. 메르메르에서 쓰이는 연마효과
    이미지의 조합으로 연마효과를 만듬.
    Ambient 수치를 변경
    Specular수치 변경
    특정 Texture를 흐르게 작업.
    (Flow Texture)
  • 54. 연마효과(Flow Texture 셋팅방법)
    RenderTarget을 이용하여 Flow Texture 2장을
    대칭되게 움직여 랜덤한 이미지 생성
    새로 생성한 이미지를 Sphere Mapping과 같은 원리로 작업.
    컬러도 customizing 가능하도록 작업.
  • 55. 목차
    Shading
    Base Rendering
    Advanced Rendering
    렌더링 관련 최적화
  • 56. 렌더링 관련 최적화
    DIP Calls ( DrawIndexedPrimitive )
    VB Change
    Texture Changes
    State Changes sets
    DrawPrimitiveUP
    Alpha Tex
    Index Buffer
    ( < 500DIP )
    ( < 500 )
    ( < 200 )
    ( < 200 )
  • 57. 속도 향상을 위한 텍스쳐 제작
    Texture는 가능하다면 1장으로 해결
    ( 단점 - 제작시간이 오래 걸림. )
    Texture 사이즈를 최대한 작게 제작
    DDS 포맷 사용
    기술적으로 Texture를 합치는 기능을 만들어 준다.
    옵션에 Texture 사이즈 변경 기능 추가
    그래픽 팀
    프로그램 팀
  • 58. DDS 구조 (DXT1)
    (1Pixel)ARGB = 32Bit = 4Byte
    1
    0
    1
    3
    0
    2
    1
    2
    0
    0
    1
    3
    (16Pixel) 4Byte * 16 = 64Byte
    1
    3
    1
    2
    최고
    최저
    보간
    보간
    최고와 최저 수치의 Color를 얻어옵니다.
    (1Pixel)RGB = 16Bit = 2Byte
    (최고,최저Pixel) 2Byte * 2 = 4Byte
    4Byte(Color) + 4Byte(Index) =
    8Byte 사용 (16Pixel)
    각 Pixel에 Index사용으로 2Bit를 할당합니다.
    2Bit는 0, 1, 2, 3으로 4개의 값을 가질수 있습니다.
    (16Pixel) 2Bit * 16 = 32Bit -> 4Byte
  • 59. DDS 사용 예
    Opaque Texture
    - DXT1
    Hard Alpha Texture
    - DXT1, DXT3
    Soft Alpha Texture
    - DXT5
  • 60. 이름을 사용한 Alpha 구별
    Opaque Texture
    - 기존 이름을 사용한다.
    Hard Alpha Texture
    - 이름 뒤에 _a 를 추가로 붙인다. ( DXT5 예외 )
    Soft Alpha Texture
    - 이름 뒤에 _a, _a1, _a2 를 추가로 붙인다.
    - DXT5 일 경우만 적용
  • 61. 왜 SoftAlpha는 a, a1, a2 으로 나눴을까?
    AlphaTest를 쓰면 OK
    하지만….
  • 62. Alpha Texture의 위험성
    남발 할 경우 느리다.
  • 63. Q & A
  • 64. 감사합니다
    궁금하신 부분이 있으시다면!!

×