public BCH_Model()
        {
            GL.GenBuffers(1, out vbo_vert);
            GL.GenBuffers(1, out vbo_bone);
            GL.GenBuffers(1, out ibo_faces);

            ImageKey         = "model";
            SelectedImageKey = "model";

            ContextMenu cm = new ContextMenu();
            MenuItem    im = new MenuItem("Import DAE");

            im.Click += Import;
            cm.MenuItems.Add(im);
            MenuItem save = new MenuItem("Save as MBN");

            save.Click += Click;
            cm.MenuItems.Add(save);
            ContextMenu = cm;

            if (!Runtime.shaders.ContainsKey("MBN"))
            {
                ShaderTools.CreateShader("MBN", "/lib/Shader/Legacy/", "/lib/Shader/");
            }

            Runtime.shaders["MBN"].DisplayCompilationWarning("MBN");

            if (shader == null)
            {
                shader = new Shader();
                shader = Runtime.shaders["MBN"];
            }
        }
Example #2
0
        public BCH_Model()
        {
            GL.GenBuffers(1, out vbo_vert);
            GL.GenBuffers(1, out vbo_bone);
            GL.GenBuffers(1, out ibo_faces);

            ImageKey         = "model";
            SelectedImageKey = "model";

            ContextMenu cm = new ContextMenu();
            MenuItem    im = new MenuItem("Import DAE");

            im.Click += Import;
            cm.MenuItems.Add(im);
            MenuItem save = new MenuItem("Save as MBN");

            save.Click += Click;
            cm.MenuItems.Add(save);
            ContextMenu = cm;

            if (!ShaderTools.hasSetupShaders)
            {
                ShaderTools.SetupShaders();
            }

            Runtime.shaders["Mbn"].DisplayCompilationWarnings("Mbn");

            if (shader == null)
            {
                shader = new Shader();
                shader = Runtime.shaders["Mbn"];
            }
        }
Example #3
0
    static bool CheckShader()
    {
        string[]      shaders      = _packTools.GetAssetsByBundle(ResourceConst.bundleShader);
        List <string> shader_infos = ShaderTools.CheckShaderLods(shaders);

        if (shader_infos == null || shader_infos.Count < 1)
        {
            return(true);
        }

        string info = string.Format("{0}个Shader LOD检测非法,打包停止,详情请看Log", shader_infos.Count);

        foreach (string shader_info in shader_infos)
        {
            Debug.LogError(shader_info);
            if (shader_infos.Count <= 5)
            {
                info = string.Format("{0}\n{1}", info, shader_info);
            }
        }

        EditorUtility.DisplayDialog("Shader检测失败", info, "停止打包");

        return(false);
    }
Example #4
0
        private Texture2DShader()
        {
            var vsBytes = ShaderTools.LoadBytecode(GraphicsBackend.Vulkan, "BasicTextureShader", ShaderStages.Vertex);
            var fsBytes = ShaderTools.LoadBytecode(GraphicsBackend.Vulkan, "BasicTextureShader", ShaderStages.Fragment);

            VertexShaderDescription   = new ShaderDescription(ShaderStages.Vertex, vsBytes, "main", true);
            FragmentShaderDescription = new ShaderDescription(ShaderStages.Fragment, fsBytes, "main", true);
        }
        private Vertex2Color4Shader()
        {
            var vsBytes = ShaderTools.LoadBytecode(GraphicsBackend.Vulkan, "Vertex2Color4", ShaderStages.Vertex);
            var fsBytes = ShaderTools.LoadBytecode(GraphicsBackend.Vulkan, "Vertex2Color4", ShaderStages.Fragment);

            VertexShaderDescription   = new ShaderDescription(ShaderStages.Vertex, vsBytes, "main", true);
            FragmentShaderDescription = new ShaderDescription(ShaderStages.Fragment, fsBytes, "main", true);
        }
        private Vertex2Color4Shader()
        {
            var vertexShaderBytes = ShaderTools.LoadShaderBytes(DisplaySettings.Instance.GraphicsBackend,
                                                                typeof(Vertex2Color4Shader).Assembly,
                                                                "Vertex2Color4ShaderSource", ShaderStages.Vertex);

            var fragmentShaderBytes = ShaderTools.LoadShaderBytes(DisplaySettings.Instance.GraphicsBackend,
                                                                  typeof(Vertex2Color4Shader).Assembly,
                                                                  "Vertex2Color4ShaderSource", ShaderStages.Fragment);

            VertexShaderDescription   = new ShaderDescription(ShaderStages.Vertex, vertexShaderBytes, "VS");
            FragmentShaderDescription = new ShaderDescription(ShaderStages.Fragment, fragmentShaderBytes, "FS");
        }
        private Texture2DShader()
        {
            var vertexShaderBytes = ShaderTools.LoadShaderBytes(DisplaySettings.Instance.GraphicsBackend,
                                                                typeof(TextNode).Assembly,
                                                                "BasicTextureShader", ShaderStages.Vertex);

            var fragmentShaderBytes = ShaderTools.LoadShaderBytes(DisplaySettings.Instance.GraphicsBackend,
                                                                  typeof(TextNode).Assembly,
                                                                  "BasicTextureShader", ShaderStages.Fragment);

            VertexShaderDescription   = new ShaderDescription(ShaderStages.Vertex, vertexShaderBytes, "VS");
            FragmentShaderDescription = new ShaderDescription(ShaderStages.Fragment, fragmentShaderBytes, "FS");
        }
Example #8
0
        public static void SetLightingUniforms(Shader shader, Camera camera)
        {
            // fresnel sky/ground color for characters & stages
            ShaderTools.LightColorVector3Uniform(shader, Runtime.lightSetParam.fresnelLight.groundColor, "fresGroundColor");
            ShaderTools.LightColorVector3Uniform(shader, Runtime.lightSetParam.fresnelLight.skyColor, "fresSkyColor");
            shader.SetVector3("fresSkyDirection", Runtime.lightSetParam.fresnelLight.getSkyDirection());
            shader.SetVector3("fresGroundDirection", Runtime.lightSetParam.fresnelLight.getGroundDirection());

            // reflection color for characters & stages
            float refR, refG, refB = 1.0f;

            ColorTools.HsvToRgb(Runtime.reflectionHue, Runtime.reflectionSaturation, Runtime.reflectionIntensity, out refR, out refG, out refB);
            shader.SetVector3("refLightColor", refR, refG, refB);

            // character diffuse lights
            shader.SetVector3("difLightColor", Runtime.lightSetParam.characterDiffuse.diffuseColor.R, Runtime.lightSetParam.characterDiffuse.diffuseColor.G, Runtime.lightSetParam.characterDiffuse.diffuseColor.B);
            shader.SetVector3("ambLightColor", Runtime.lightSetParam.characterDiffuse.ambientColor.R, Runtime.lightSetParam.characterDiffuse.ambientColor.G, Runtime.lightSetParam.characterDiffuse.ambientColor.B);

            shader.SetVector3("difLightColor2", Runtime.lightSetParam.characterDiffuse2.diffuseColor.R, Runtime.lightSetParam.characterDiffuse2.diffuseColor.G, Runtime.lightSetParam.characterDiffuse2.diffuseColor.B);
            shader.SetVector3("ambLightColor2", Runtime.lightSetParam.characterDiffuse2.ambientColor.R, Runtime.lightSetParam.characterDiffuse2.ambientColor.G, Runtime.lightSetParam.characterDiffuse2.ambientColor.B);

            shader.SetVector3("difLightColor3", Runtime.lightSetParam.characterDiffuse3.diffuseColor.R, Runtime.lightSetParam.characterDiffuse3.diffuseColor.G, Runtime.lightSetParam.characterDiffuse3.diffuseColor.B);
            shader.SetVector3("ambLightColor3", Runtime.lightSetParam.characterDiffuse3.ambientColor.R, Runtime.lightSetParam.characterDiffuse3.ambientColor.G, Runtime.lightSetParam.characterDiffuse3.ambientColor.B);

            // character specular light
            shader.SetVector3("specLightColor", LightTools.specularLight.diffuseColor.R, LightTools.specularLight.diffuseColor.G, LightTools.specularLight.diffuseColor.B);

            // stage fog
            shader.SetBoolToInt("renderFog", Runtime.renderFog);

            shader.SetVector3("difLight2Direction", Runtime.lightSetParam.characterDiffuse2.direction);
            shader.SetVector3("difLight3Direction", Runtime.lightSetParam.characterDiffuse2.direction);

            if (Runtime.cameraLight)
            {
                // Camera light should only affect character lighting.
                Matrix4 invertedCamera = camera.MvpMatrix.Inverted();
                Vector3 lightDirection = new Vector3(0f, 0f, -1f);
                shader.SetVector3("lightDirection", Vector3.TransformNormal(lightDirection, invertedCamera).Normalized());
                shader.SetVector3("specLightDirection", Vector3.TransformNormal(lightDirection, invertedCamera).Normalized());
                shader.SetVector3("difLightDirection", Vector3.TransformNormal(lightDirection, invertedCamera).Normalized());
            }
            else
            {
                shader.SetVector3("specLightDirection", LightTools.specularLight.direction);
                shader.SetVector3("difLightDirection", Runtime.lightSetParam.characterDiffuse.direction);
            }
        }
Example #9
0
 static void Init()
 {
     ShaderTools window = (ShaderTools)EditorWindow.GetWindow(typeof(ShaderTools));
 }
Example #10
0
 private void checkShaderErrorsToolStripMenuItem_Click(object sender, EventArgs e)
 {
     ShaderTools.SaveErrorLogs();
 }