zoukankan      html  css  js  c++  java
  • GLSLPROGRAM METALPROGRAM unity

    https://docs.unity3d.com/Manual/SL-GLSLShaderPrograms.html

    unity里面可以直接写原生的shader

    用相应的宏包起来

    CGPROGRAM

    GLSLPROGRAM

    HLSLPROGRAM

    METALPROGRAM  

    ENDCG ENDGLSL ENDHLSL ENDMETAL

    Shader "MetalSimpleTexture"
    {
        Properties
        {
            _MainTex ("Texture", 2D) = "white" {}
            _Color ("Main Color", Color) = (1,1,1,1)
        }
        SubShader
        {
            Tags { "RenderType"="Opaque" }
            LOD 100

            Pass
            {
                METALINCLUDE
                #include <metal_stdlib>
                #include <metal_texture>
                ENDMETAL

                METALPROGRAM
                #pragma vertex vert
                #pragma fragment frag

                using namespace metal;

                // currently METALPROGRAM supports only one uniform buffer, shared between vertex program and fragment shader
                struct Globals
                {
                    METAL_CONST_MATRIX(float, 4,4, unity_ObjectToWorld);
                    METAL_CONST_MATRIX(float, 4,4, unity_MatrixVP);
                    METAL_CONST_VECTOR(half, 4, _Color);
                };

                struct InputVP
                {
                    float4 pos METAL_VERTEX_INPUT(0);
                    float2 uv METAL_VERTEX_INPUT(3);
                };
                struct OutputVP
                {
                    float4 pos [[ position ]];
                    float2 uv [[ user(TEXCOORD0) ]];
                };
                struct OutputFS
                {
                    half4 color [[ color(0) ]];
                };

                vertex OutputVP vert(constant Globals& glob [[ buffer(0) ]], InputVP input [[ stage_in ]])
                {
                    OutputVP output;
                    output.pos = glob.unity_MatrixVP * (glob.unity_ObjectToWorld * input.pos);
                    output.uv = input.uv;
                    return output;
                }
                fragment OutputFS frag(constant Globals& glob [[ buffer(0) ]], OutputVP input [[ stage_in ]], METAL_TEX_INPUT(texture2d<half, access::sample>, 0, _MainTex))
                {
                    OutputFS output;
                    output.color.rgb = glob._Color.rgb * _MainTex.sample(sampler__MainTex, input.uv).xyz;
                    output.color.a = 1;
                    return output;
                }
                ENDMETAL
            }
        }
    }
  • 相关阅读:
    ArcGIS API for JavaScript开发初探——基本地图组件使用
    Win10升级惹的祸,Oracle服务全没有了,怎么解决?
    ArcGIS Pro开发Web3D应用(2)——地图分屏对比(多屏对比)思路
    ArcGIS Pro玩转BIM应用浅谈
    ArcGIS Pro开发Web3D应用(1)——环境搭建与初始实例
    ArcGIS JS API4 With VueJS集成开发
    也谈开源GIS架构实现思想
    Oracle配置SQL空间操作要点说明
    Web直接导入导出SHP/CAD实现探讨。
    ArcGIS Js/Flex等前端API(Query(StatisticDefinition)时)针对SDE的SHAPE.AREA/SHAPE.LEN知道查询无效,而对GDB的SHAPE_Area/SHAPE_Length有效探索。
  • 原文地址:https://www.cnblogs.com/minggoddess/p/11465082.html
Copyright © 2011-2022 走看看