72 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			C#
		
	
	
	
			
		
		
	
	
			72 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			C#
		
	
	
	
| //namespace UnityEngine.PostProcessing
 | |
| //{
 | |
| //    public sealed class DitheringComponent : PostProcessingComponentRenderTexture<DitheringModel>
 | |
| //    {
 | |
| //        static class Uniforms
 | |
| //        {
 | |
| //            internal static readonly int _DitheringTex = Shader.PropertyToID("_DitheringTex");
 | |
| //            internal static readonly int _DitheringCoords = Shader.PropertyToID("_DitheringCoords");
 | |
| //        }
 | |
| 
 | |
| //        public override bool active
 | |
| //        {
 | |
| //            get
 | |
| //            {
 | |
| //                return model.enabled
 | |
| //                       && !context.interrupted;
 | |
| //            }
 | |
| //        }
 | |
| 
 | |
| //        // Holds 64 64x64 Alpha8 textures (256kb total)
 | |
| //        Texture2D[] noiseTextures;
 | |
| //        int textureIndex = 0;
 | |
| 
 | |
| //        const int k_TextureCount = 64;
 | |
| 
 | |
| //        public override void OnDisable()
 | |
| //        {
 | |
| //            noiseTextures = null;
 | |
| //        }
 | |
| 
 | |
| //        void LoadNoiseTextures()
 | |
| //        {
 | |
| //            noiseTextures = new Texture2D[k_TextureCount];
 | |
| 
 | |
| //            for (int i = 0; i < k_TextureCount; i++)
 | |
| //                noiseTextures[i] = Resources.Load<Texture2D>("Bluenoise64/LDR_LLL1_" + i);
 | |
| //        }
 | |
| 
 | |
| //        public override void Prepare(Material uberMaterial)
 | |
| //        {
 | |
| //            float rndOffsetX;
 | |
| //            float rndOffsetY;
 | |
| 
 | |
| //#if POSTFX_DEBUG_STATIC_DITHERING
 | |
| //            textureIndex = 0;
 | |
| //            rndOffsetX = 0f;
 | |
| //            rndOffsetY = 0f;
 | |
| //#else
 | |
| //            if (++textureIndex >= k_TextureCount)
 | |
| //                textureIndex = 0;
 | |
| 
 | |
| //            rndOffsetX = Random.value;
 | |
| //            rndOffsetY = Random.value;
 | |
| //#endif
 | |
| 
 | |
| //            if (noiseTextures == null)
 | |
| //                LoadNoiseTextures();
 | |
| 
 | |
| //            var noiseTex = noiseTextures[textureIndex];
 | |
| 
 | |
| //            uberMaterial.EnableKeyword("DITHERING");
 | |
| //            uberMaterial.SetTexture(Uniforms._DitheringTex, noiseTex);
 | |
| //            uberMaterial.SetVector(Uniforms._DitheringCoords, new Vector4(
 | |
| //                (float)context.width / (float)noiseTex.width,
 | |
| //                (float)context.height / (float)noiseTex.height,
 | |
| //                rndOffsetX,
 | |
| //                rndOffsetY
 | |
| //            ));
 | |
| //        }
 | |
| //    }
 | |
| //}
 |