Refresh

This website openwiki.kr/unity/renderingupgradedetails is currently offline. Cloudflare\'s Always Online™ shows a snapshot of this web page from the Internet Archive\'s Wayback Machine. To check for the live version, click Refresh.

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

유니티 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 를 추가하세요.

연결문서