Exemple #1
0
        private void TransformAOTexture(ShaderArguments arguments, string baseColorName)
        {
            if (arguments.Occlusion == null)
            {
                return;
            }
            var sourceFileTimestampUtc = ExportUtils.GetLastWriteTimeUtc(arguments.Occlusion);
            var assetGuid = arguments.Occlusion.GetKey();

            if (_engine.IsUpToDate(assetGuid, baseColorName, sourceFileTimestampUtc))
            {
                return;
            }

            var tmpMaterial = new Material(Shader.Find("Hidden/UnityToCustomEngineExporter/Urho3D/PremultiplyOcclusionStrength"));

            try
            {
                var mainTexture = arguments.Occlusion;
                tmpMaterial.SetTexture("_MainTex", mainTexture);
                tmpMaterial.SetFloat("_OcclusionStrength", arguments.OcclusionStrength);
                new TextureProcessor().ProcessAndSaveTexture(mainTexture, tmpMaterial,
                                                             _engine.GetTargetFilePath(baseColorName));
                WriteOptions(assetGuid, baseColorName, sourceFileTimestampUtc,
                             ExportUtils.GetTextureOptions(mainTexture).WithSRGB(true));
            }
            finally
            {
                Object.DestroyImmediate(tmpMaterial);
            }
        }
Exemple #2
0
 private void AddCommonTextures(ShaderArguments legacy)
 {
     AddTexture(legacy.Occlusion, new TextureReferences(TextureSemantic.Occlusion));
     AddTexture(legacy.Bump, new TextureReferences(TextureSemantic.Bump, legacy.BumpScale));
     AddTexture(legacy.Detail, new TextureReferences(TextureSemantic.Detail));
     AddTexture(legacy.DetailNormal, new TextureReferences(TextureSemantic.DetailNormal));
     AddTexture(legacy.Emission, new TextureReferences(TextureSemantic.Emission));
     AddTexture(legacy.Parallax, new TextureReferences(TextureSemantic.Parallax));
 }
Exemple #3
0
        public void Draw(ShaderArguments arguments)
        {
            Activate();
            Plate.Object.Activate();

            _uniforms.Invoke(arguments);

            GL.DrawArrays(PrimitiveType.Quads, 0, 4);
            CleanUp();
        }
 protected void WriteCommonParameters(XmlWriter writer, ShaderArguments arguments)
 {
     writer.WriteParameter("UOffset", new Vector4(arguments.MainTextureScale.x, 0, 0,
                                                  arguments.MainTextureOffset.x));
     writer.WriteParameter("VOffset", new Vector4(0, arguments.MainTextureScale.y, 0,
                                                  arguments.MainTextureOffset.y));
     if (arguments.AlphaTest)
     {
         WriteAlphaTest(writer);
     }
 }
 protected virtual void SetupFlags(Material material, ShaderArguments arguments)
 {
     arguments.Shader      = material.shader.name;
     arguments.Transparent = material.renderQueue == (int)RenderQueue.Transparent;
     arguments.AlphaTest   = material.renderQueue == (int)RenderQueue.AlphaTest;
     arguments.HasEmission = material.IsKeywordEnabled("_EMISSION");
     if (material.HasProperty("_MainTex"))
     {
         arguments.MainTextureOffset = material.mainTextureOffset;
         arguments.MainTextureScale  = material.mainTextureScale;
     }
 }
Exemple #6
0
        public STPostProcessEffect(STPDrawNode postEffectNode)
        {
            Arguments = Arguments ?? new ShaderArguments();

            if (postEffectNode.OGLEffect == null)
            {
                throw new Exception("[ERROR AT IMPORTING EFFECT] DrawNode didn't contain a OpenGL-shader.");
            }

            _shader = new STPostProcessShader(postEffectNode);

            foreach (KeyValuePair <string, STPVariable> pair in postEffectNode.Variables)
            {
                if (pair.Value.Type == STPBasisType.Texture)
                {
                    if (pair.Value.Texture == null)
                    {
                        continue;
                    }
                    Arguments[pair.Key] = new Texture(((STPTextureNode)pair.Value.Texture).Bitmap);
                }
            }
        }