렌터링 업그레이드 세부사항

유니티 3은 많은 그래픽 관련 변화를 가져왔는데 기존 유니티 2.x 프로젝트에서 업그레이드할 때 어떤 것들은 변화가 필요할 것입니다. 쉐이더에 관련된 변화는 Shader Upgrade Guide 를 보세요.

포워드 렌더링(Forward Rendering) 경로 변경

유니티 2.x은 유니티 3에서 Forward라고 불리는 하나의 레더링 경로를 가지고 있었습니다. 유니티 2와 비교한 주요한 변화로는 다음이 있습니다:

  • 가장 흔한 경우(빛 픽셀당 한 방향)에 이제 하나의 패스로 그려집니다(주로 두개의 패스였음).
  • 포인트 & 스포트라이트 그림자는 지원되지 않습니다. 오직 단방향 빛만 그림자를 만들 수 있습니다. 더 많은 그림자를 원하면 Deferred Lighting 경로를 이용하세요.
  • 대부분의 "Vertex" 빛은 구형 고조파(Spherical Harmonics) 빛으로 바뀌었습니다.
  • 포워드 렌더링 경로는 온전히 쉐이더를 기반으로 하므로 OpenGL ES 2.0, Xbox 360, PS3에서 작동합니다 (즉 고정된 기능 렌더링을 지원하지 않는 플랫폼).

쉐이더 변경

더 자세한 사항은 Shader Upgrade Guide을 참조하세요. 사용자가 빛과 상호작용하는 쉐이더를 구현하기 원한다면 Surface Shaders를 사용해야 합니다.

아무도 알아 차리지 못할 눈에 띄지 않는 그래픽 변경'^TM^'

  • Mac Radeon 9200 픽셀 쉐이더 지원 제거(!!ATIfs 어셈블리 쉐이더).
  • pre-ShaderModel2.0 하드웨어에서 픽셀단위 빛 지원 제거. 그 결과 Diffuse Fast 쉐이더는 단지 VertexLit 입니다.
  • 약해지지 않는 빛 제거. 모든 포인트와 스포트라이트 빛은 점점 약해집니다.
  • 스크립트 콜백 제거: OnPreCullObjectRenderBeforeQueues 속성.
  • p-buffer 에 기반을 둔RenderTextures 제거. OpenGL 에 있는RenderTextures는 FBO지원을 필요로 합니다.
  • 대부분의 Pass LightMode tags는 사라졌고 새로운 태그로 교체 되었습니다. 사용자는 어쨌든 보통 Surface Shaders를 사용해야할 것입니다.
  • Texture instanceIDs는 더이상OpenGL 텍스쳐 이름이 아닙니다. 이것에 의존하는 C++ 플러그인에 영향을 줄 수 있습니다. 대신 texture.GetNativeTextureID()를 사용하세요.
  • 쉐이더 키워드인SHADOWS_NATIVE 부터SHADOWS_DEPTH까지, SHADOWS_PCF4 부터 SHADOWS_SOFT까지 삭제.
  • 객체에서 8개 이상의 꼭지점 빛에 영향을 받는 주위의 부스트 제거.
  • _ObjectSpaceCameraPos_ObjectSpaceLightPos0의 제거 (_WorldSpaceCameraPos_WorldSpaceLightPos0가 추가됨).
  • 쉐이더 텍스쳐 속성의 LightmapMode 태그는 아무것도 하지 않습니다.
  • Skybox 쉐이더는 depth buffer에 쓰여지지 않습니다.
  • GrabPass (즉 굴절되는 유리 쉐이더)는 항상 화면 크기의 텍스쳐를 잡습니다.
  • #pragma multi_compile_vertex#pragma multi_compile_fragment는 사라졌습니다 .
  • ShaderLab의 다각형 오프셋은 더이상 변수를 참조 못합니다 (예를 들어Offset [_Var1], [_Var2]).
  • TRANSFER_EYEDEPTH/OUTPUT_EYEDEPTH를 to UNITY_TRANSFER_DEPTH/UNITY_OUTPUT_DEPTH로 개명. 이것은 유니티3에서 float2로도 작동.
  • 특별한 쉐이더 패스 타입제거: R2TPass, OffscreenPass.
  • 내장된 _Light2World0, _World2Light0 쉐이더 메트릭스 삭제.
  • 내장된 쉐이더 벡터인 _SceneAmbient, _MultiModelAmbient, _MultiAmbient, _ModelAmbient, _MultiplyFog, _LightHackedDiffuse0, _ObjectCenterModelLightColor0 제거.
  • 내장된 쉐이터 float인 _FirstPass 삭제.
  • 쉐이더 파일의 안개 모드는 변수에서 올 수 없음(예를들어 Fog { Mode [_MyFogMode] }). 글로벌 안개 모드사용을 위해서는 Fog { Mode Global }와 같이 사용하세요.
  • ShaderLab에서 BlendColor 색 삭제.
  • 값이 있는 쉐이더 속성에 의한 텍스쳐 메트릭스 선언의 지원 삭제.
  • "static" 쉐이더 속성 지원 삭제.
  • 텍스쳐 경계 색 지원 삭제 (RenderTexture.SetBorderColor).
  • ColorMaterial Ambient, Diffuse, Specular 지원 삭제(ColorMaterial AmbientAndDiffuse 와 Emission 는 남아있음). 플랫폼에 따른 사라진 것에 대한 지원은 혼란의 야기하고 별로 유용하지도 않습니다.
  • 내장된 _CameraToWorld_WorldToCamera 메트릭스가 이제 사용자가 기대했던 것을합니다. 이전에는 회전만 포함하며 Y축에서 카메라와 세계가 뒤집혔었습니다. 저희도 왜 그러는지 알지 못합니다:)
  • Shader.ClearAll()의 삭제. 2007년부터 사용되지 않았습니다. 이제 보내야할 때입니다.
  • 꼭지점 쉐이더는 이제 쉐이더 모델 2.0으로 컴파일 됩니다(이전에는 1.1). SM1.1로 컴파일하길 원하면 쉐이더에 #pragma target 1.1 를 추가하세요.

역링크