유니티 3은 많은 그래픽 관련 변화를 가져왔는데 기존 유니티 2.x 프로젝트에서 업그레이드할 때 어떤 것들은 변화가 필요할 것입니다. 쉐이더에 관련된 변화는 Shader Upgrade Guide 를 보세요.
유니티 2.x은 유니티 3에서 Forward라고 불리는 하나의 레더링 경로를 가지고 있었습니다. 유니티 2와 비교한 주요한 변화로는 다음이 있습니다:
더 자세한 사항은 Shader Upgrade Guide을 참조하세요. 사용자가 빛과 상호작용하는 쉐이더를 구현하기 원한다면 Surface Shaders를 사용해야 합니다.
OnPreCullObject와 RenderBeforeQueues 속성.texture.GetNativeTextureID()를 사용하세요._ObjectSpaceCameraPos와 _ObjectSpaceLightPos0의 제거 (_WorldSpaceCameraPos와 _WorldSpaceLightPos0가 추가됨).LightmapMode 태그는 아무것도 하지 않습니다.GrabPass (즉 굴절되는 유리 쉐이더)는 항상 화면 크기의 텍스쳐를 잡습니다.#pragma multi_compile_vertex와 #pragma multi_compile_fragment는 사라졌습니다 .Offset [_Var1], [_Var2]).TRANSFER_EYEDEPTH/OUTPUT_EYEDEPTH를 to UNITY_TRANSFER_DEPTH/UNITY_OUTPUT_DEPTH로 개명. 이것은 유니티3에서 float2로도 작동._Light2World0, _World2Light0 쉐이더 메트릭스 삭제._FirstPass 삭제.Fog { Mode [_MyFogMode] }). 글로벌 안개 모드사용을 위해서는 Fog { Mode Global }와 같이 사용하세요.BlendColor 색 삭제.RenderTexture.SetBorderColor).ColorMaterial Ambient, Diffuse, Specular 지원 삭제(ColorMaterial AmbientAndDiffuse 와 Emission 는 남아있음). 플랫폼에 따른 사라진 것에 대한 지원은 혼란의 야기하고 별로 유용하지도 않습니다._CameraToWorld와 _WorldToCamera 메트릭스가 이제 사용자가 기대했던 것을합니다. 이전에는 회전만 포함하며 Y축에서 카메라와 세계가 뒤집혔었습니다. 저희도 왜 그러는지 알지 못합니다:)Shader.ClearAll()의 삭제. 2007년부터 사용되지 않았습니다. 이제 보내야할 때입니다.