Notifications
Article
LWRP 4-preview を2019.1で動かすように改造した話
Published 2 months ago
104
0
LWRP 4 previewを2019.1で動かす
LWRP 4-previewを 2019.1で動かすようにする変更についてコチラに記載いたします。
LWRPだけでなく、PPSV2 , ShaderGraphにも手を入れる必要があります。(render-pipelines.core については手を入れる必要はありませんでした。)
こちらにその状況を残しておきます

■ShaderGraphについて

ShaderGraph側が新しいUIシステム「UIElements」を利用していました。 2019.1では 「UIElements」も Experimentalが外れてクラス変更がありました。
こちらの大幅な変更の必要があり大変そうでした。 今回の検証では、ShaderGraphを外した状況でLWRPが動作するように改造して行いました。

■PPSV2の変更について

ShaderGraphのコードも2019.1でコンパイルエラーとなりましたので、下記書き換えを行いました
// GlobalSettings.cs Before #if UNITY_2018_3_OR_NEWER [SettingsProvider] static SettingsProvider PreferenceGUI() { return new SettingsProvider("Preferences/Post-processing") { guiHandler = searchContext => OpenGUI(), scopes = SettingsScopes.User }; }
// GlobalSettings.cs After [SettingsProvider] static SettingsProvider PreferenceGUI() { return new SettingsProvider("Preferences/Post-processing",SettingsScope.User) { guiHandler = searchContext => OpenGUI() }; }

■LWRPでの書き換えについて

UnityEngine.Experimental.Rendering から UnityEngine.Rendering に多くのクラスが移動されました。
ただ、RenderPipelineクラスが UnityEngine.Experimental.Rendering にも UnityEngine.Rendering にも存在しており、コンパイルエラーを起こしていたため明示的にnamespaceを指定しております。

・クラス,enum変更について

  • CullResults -> CullingResults
  • ShaderPathName -> ShaderTagId
  • SortingFlag -> SortingCriteria
  • DrawRendererSettings -> DrawingSettings
  • FilterRenderersSettings -> FilteringSettings
  • DrawShadowsSettings -> ShadowDrawingSettings
  • RendererConfiguration -> PerObjectData

・DrawingSettingsについて ( 元DrawRendererSettings)

  • DrawingSettingsではプロパティsortingがなく、DrawingSettingsのコンストラクタでの指定になります
  • DrawingSettings ではメソッドSetOverrideMaterial がなく、overrideMaterialの設定とoverrideMaterialPassIndexの設定がされます。
  • rendererConfigurationがなくなり、perObjectDataになりました
  • int型のflagsプロパティでしていしていたDynamicBatching/Instancingの有効無効ですが、enableInstancing/enalbeDynamicBatchingという形で別々のプロパティになりました

・CullingResultsについて( 元 CullResults)

  • cullResults.GetLightIndexMap()の戻り値が int[] から NativeArray<int>に変わりました。
  • またGetLightIndexMapに引数にUnity.Collection.Allocatorが必要になりました。
  • 関数 GetLightIndicesCount()が、プロパティ lightAndReflectionProbeIndexCount に変わりました
  • FillLightIndices が FillLightAndReflectionProbeIndices に変わりました
  • プロパティ visibleLights の方が List<VisibleLight>から NativeArray<VisibleLight> に変わりました。

・RenderPipelineについて

  •  Dispose() が引数 boolを取るようになり Dispose(bool flag)となりました
  • InternalCreatePipeline から CreatePipeline に変わりました

・FilteringSettings について (元 FilterRenderersSettings )

  • FilteringSettingsでは コンストラクタの引数に RenderQueueRangeを指定してください

・RenderPipelineAssetについて

 - 下記が関数からプロパティに変わりました
GetDefaultMaterial() -> defaultMaterial GetDefaultParticleMaterial() -> defaultParticleMaterial GetDefaultLineMaterial() -> defaultLineMaterial GetDefaultTerrainMaterial() -> defaultTerrainMaterial GetDefaultUIMaterial() -> defaultUIMaterial GetDefaultUIOverdrawMaterial() -> defaultUIOverdrawMaterial GetDefaultUIETC1SupportedMaterial() -> defaultUIETC1SupportedMaterial GetDefault2DMaterial() -> default2DMaterial GetDefaultShader() -> defaultShader
  - 下記関数はなくなりました
GetAutodeskInteractiveShader() GetAutodeskInteractiveTransparentShader() GetAutodeskInteractiveMaskedShader()

・VisibleLightsについて

  •  プロパティ localToWorld が localToWorldMatrix に変わりました

・その他呼び出しについて

  • 「CullResults.Cull(ref cullingParameters, context, ref cullResults);」 と呼び出していましたが、 「cullResults = context.Cull(ref cullingParameters); 」という形に変わります
  • 「CullResults.GetCullingParameters(camera, cameraData.isStereoEnabled, out cullingParameters)」 という呼び出しが 「camera.TryGetCullingParameters(IsStereoEnabled(camera), out cullingParameters)」に変わります

・SupportedRenderingFeaturesについて

// Before SupportedRenderingFeatures.active = new SupportedRenderingFeatures() { reflectionProbeSupportFlags = SupportedRenderingFeatures.ReflectionProbeSupportFlags.None, defaultMixedLightingMode = SupportedRenderingFeatures.LightmapMixedBakeMode.Subtractive, supportedMixedLightingModes = SupportedRenderingFeatures.LightmapMixedBakeMode.Subtractive, supportedLightmapBakeTypes = LightmapBakeType.Baked | LightmapBakeType.Mixed, supportedLightmapsModes = LightmapsMode.CombinedDirectional | LightmapsMode.NonDirectional, rendererSupportsLightProbeProxyVolumes = false, rendererSupportsMotionVectors = false, rendererSupportsReceiveShadows = false, rendererSupportsReflectionProbes = true };
// After SupportedRenderingFeatures.active = new SupportedRenderingFeatures() { reflectionProbeModes = SupportedRenderingFeatures.ReflectionProbeModes.None, defaultMixedLightingModes = SupportedRenderingFeatures.LightmapMixedBakeModes.Subtractive, mixedLightingModes = SupportedRenderingFeatures.LightmapMixedBakeModes.Subtractive, lightmapBakeTypes = LightmapBakeType.Baked | LightmapBakeType.Mixed, lightmapsModes = LightmapsMode.CombinedDirectional | LightmapsMode.NonDirectional, lightProbeProxyVolumes = false, motionVectors = false, receiveShadows = false, reflectionProbes = true };
Tags:
YusukeKurokawa (黒河 優介)
Developer Relation Manager/Engineer - Programmer
7
Comments