• 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
            }
        }
    }
  • 相关阅读:
    网络设备snmp配置syslog方法。
    Oracle19c安装手册Windows及mysql-oracle转换
    Oracle11g--hxss安装
    VMWare ESXI 6.5 的部署及简单使用的说明
    windos下redis的启动与安装
    二、fidder 和 python结合进行 get post 请求发送
    一、fidder工具使用
    Python学习二《数据类型介绍》
    Python学习一《基础规范》
    Charles设置为代理服务
  • 原文地址:https://www.cnblogs.com/minggoddess/p/11465082.html
Copyright © 2020-2023  润新知