香港6合总彩透码主论坛
 找回密碼
 注冊帳號

掃一掃,訪問微社區

著色器 求教shader大佬,或者用過GPU Instancer插件的

1
回復
651
查看
打印 上一主題 下一主題
[ 復制鏈接 ]
6蠻牛粉絲
1444/1500
排名
3288
昨日變化

24

主題

141

帖子

1444

積分

Rank: 6Rank: 6Rank: 6

UID
123454
好友
0
蠻牛幣
2738
威望
0
注冊時間
2015-9-22
在線時間
825 小時
最后登錄
2020-2-16
30蠻牛幣
本帖最后由 稻米熟了嗎 于 2019-6-20 21:41 編輯

我想用自己的shader代替它自帶的shader,然后實現類似案例里的效果 這是他的shader
[C#] 純文本查看 復制代碼
Shader "GPUInstancer/ColorVariationShader" {
        Properties {
                _Color ("Color", Color) = (1,1,1,1)
                _MainTex ("Albedo (RGB)", 2D) = "white" {}
                _Glossiness ("Smoothness", Range(0,1)) = 0.5
                _Metallic ("Metallic", Range(0,1)) = 0.0
        }
        SubShader {
                Tags { "RenderType"="Opaque" }
                LOD 200

                CGPROGRAM
#include "UnityCG.cginc"
#include "./../../../Shaders/Include/GPUInstancerInclude.cginc"
#pragma instancing_options procedural:setupGPUI
#pragma multi_compile_instancing
                #pragma surface surf Standard addshadow fullforwardshadows

                #pragma target 3.0

                sampler2D _MainTex;

                struct Input {
                        float2 uv_MainTex;
                };

                half _Glossiness;
                half _Metallic;
                fixed4 _Color;

                #if SHADER_API_D3D11
                #ifdef UNITY_PROCEDURAL_INSTANCING_ENABLED
                        StructuredBuffer<float4> colorBuffer;
                #endif
                #endif
                
                void surf (Input IN, inout SurfaceOutputStandard o) {
                        float4 col = _Color;

                        #if SHADER_API_D3D11
                        #ifdef UNITY_PROCEDURAL_INSTANCING_ENABLED
                                        uint index = gpuiTransformationMatrix[unity_InstanceID];
                                        col = colorBuffer[index];
                        #endif
                        #endif

                        // Albedo comes from a texture tinted by color
                        fixed4 c = tex2D (_MainTex, IN.uv_MainTex) * saturate(col);
                        o.Albedo = c.rgb;
                        // Metallic and smoothness come from slider variables
                        o.Metallic = _Metallic;
                        o.Smoothness = _Glossiness;
                        o.Alpha = c.a;
                }

                ENDCG
        }
        FallBack "Standard"
}




然后我照著改了一下自己用shaderforge連的一個高亮的shader,想實現每個顏色不同的效果,但是全部實例的顏色始終是一樣的然后不停的閃爍,這是我改的shader
[C#] 純文本查看 復制代碼
Shader "Custom/ligthing" {
    Properties {
        _Color ("Color", Color) = (0.07843138,0.3921569,0.7843137,1)
    }
    SubShader {
        Tags {
            "RenderType"="Opaque"
        }
        
        Pass {
            Name "FORWARD"
            Tags {
                "LightMode"="ForwardBase"
            }
            
            
            CGPROGRAM
                        #include "UnityCG.cginc"
            #include "./../../../Shaders/Include/GPUInstancerInclude.cginc"
            #pragma multi_compile_instancing
            #pragma instancing_options procedural:setupGPUI
                        //#pragma surface surf Standard fullforwardshadows
            #pragma vertex vert
            #pragma fragment frag
                        //#pragma surface surf Standard fullforwardshadows
            // #define UNITY_PASS_FORWARDBASE
            #pragma multi_compile_fwdbase_fullshadows
            #pragma only_renderers d3d9 d3d11 glcore gles 
            #pragma target 3.0
            uniform float4 _Color;

                        #if SHADER_API_D3D11
                     #ifdef UNITY_PROCEDURAL_INSTANCING_ENABLED
                        StructuredBuffer<float4> colorBuffer;
                    #endif
                    #endif
                        
            struct VertexInput {
                float4 vertex : POSITION;
                                UNITY_VERTEX_INPUT_INSTANCE_ID
            };
            struct VertexOutput {
                float4 pos : SV_POSITION;
            };
            VertexOutput vert (VertexInput v) {                            
                VertexOutput o = (VertexOutput)0;        
                                UNITY_SETUP_INSTANCE_ID(v);
                o.pos = UnityObjectToClipPos( v.vertex );
                return o;
            }                        
            float4 frag(VertexOutput i) : COLOR {
////// Lighting:
////// Emissive:
            float4 col = _Color; 

                        #if SHADER_API_D3D11
                        #ifdef UNITY_PROCEDURAL_INSTANCING_ENABLED
                                        uint index = gpuiTransformationMatrix[unity_InstanceID];
                                        col = colorBuffer[index];
                        #endif
                        #endif
                //float3 emissive = _Color.rgb;
                                float3 emissive = saturate(col).rgb;
                float3 finalColor = emissive;
                return fixed4(finalColor,1);
            }
            ENDCG
        }
    }
    FallBack "Diffuse"

}


有沒有大佬知道要怎么更改

QQ瀏覽器截圖20190620190653.png (59.11 KB, 下載次數: 2)

QQ瀏覽器截圖20190620190653.png

QQ瀏覽器截圖20190620190703.png (33.72 KB, 下載次數: 6)

QQ瀏覽器截圖20190620190703.png
回復

使用道具 舉報

6蠻牛粉絲
1444/1500
排名
3288
昨日變化

24

主題

141

帖子

1444

積分

Rank: 6Rank: 6Rank: 6

UID
123454
好友
0
蠻牛幣
2738
威望
0
注冊時間
2015-9-22
在線時間
825 小時
最后登錄
2020-2-16
沙發
樓主 2019-4-25 17:22:59 只看該作者
本帖最后由 稻米熟了嗎 于 2019-4-25 18:11 編輯

有沒有大佬呀
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 注冊帳號

本版積分規則

香港6合总彩透码主论坛
聚乐彩群 nba比分直播预测 澳门原版足球指数 手机麻将软件价格 澳洲幸运10历史数据 中彩网首页 买海南彩票软件 单机真人脱麻将单机手机 单机麻将游戏 新疆18选7开奖规则