public static void InitSkinRender(ref SkinRender skr, Camera cam)
 {
     skr.RenderCamera                  = cam;
     skr.SubsurfaceBuffer              = new CommandBuffer();
     skr.SubsurfaceBuffer.name         = "Separable Subsurface Scatter";
     skr.SubsurfaceEffects             = new Material(Shader.Find("Hidden/SeparableSubsurfaceScatter"));
     cam.clearStencilAfterLightingPass = true;
 }
 public static void UpdateSubsurface(ref SkinRender skr, ref SkinData data, List <Vector4> kernelArray)
 {
     ///SSS Buffer
     skr.SubsurfaceBuffer.SetGlobalFloat(ShaderIDs._SSSScale, data.SubsurfaceScaler);
     skr.SubsurfaceBuffer.SetGlobalVectorArray(ShaderIDs._Kernel, kernelArray);
     skr.SubsurfaceBuffer.SetGlobalFloat(ShaderIDs._RandomNumber, Random.Range(0f, 1000f));
     skr.SubsurfaceBuffer.SetGlobalTexture(ShaderIDs._MainTex, BuiltinRenderTextureType.CameraTarget);
     skr.SubsurfaceBuffer.SetRenderTarget(ShaderIDs._SceneColor, BuiltinRenderTextureType.CameraTarget);
     skr.SubsurfaceBuffer.DrawRenderer(data.renderer, skr.SubsurfaceEffects, 0, 0);
     skr.SubsurfaceBuffer.SetGlobalFloat(ShaderIDs._RandomNumber, Random.Range(0f, 1000f));
     skr.SubsurfaceBuffer.SetGlobalTexture(ShaderIDs._MainTex, ShaderIDs._SceneColor);
     skr.SubsurfaceBuffer.SetRenderTarget(BuiltinRenderTextureType.CameraTarget);
     skr.SubsurfaceBuffer.DrawRenderer(data.renderer, skr.SubsurfaceEffects, 0, 1);
 }
 public static void DisposeSkinRender(ref SkinRender skr)
 {
     skr.RenderCamera.RemoveCommandBuffer(CameraEvent.AfterForwardOpaque, skr.SubsurfaceBuffer);
     skr.SubsurfaceBuffer.Dispose();
 }
 public static void ClearBuffer(ref SkinRender skr)
 {
     skr.SubsurfaceBuffer.Clear();
     skr.SubsurfaceBuffer.GetTemporaryRT(ShaderIDs._SceneColor, skr.RenderCamera.pixelWidth, skr.RenderCamera.pixelHeight, 0, FilterMode.Point, RenderTextureFormat.DefaultHDR);
 }
Exemplo n.º 5
0
 private void OnPreCull()
 {
     currentSkr = skinRender;
     SSSFunction.ClearBuffer(ref currentSkr);
 }