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); } }
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)); }
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; } }
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); } } }