游戏蛮牛学习群(纯技术交流,不闲聊):539178957
游戏蛮牛 手机端
开启辅助访问
 找回密码
 注册帐号

扫一扫,访问微社区

开发者专栏

关注:2260

当前位置:游戏蛮牛 技术专区 开发者专栏

__________________________________________________________________________________
开发者干货区版块规则:

  1、文章必须是图文形式。(至少2幅图)
      2、文章字数必须保持在1500字节以上。(编辑器右下角有字数检查)
      3、本版块只支持在游戏蛮牛原创首发,不支持转载。
      4、本版块回复不得无意义,如:顶、呵呵、不错......【真的会扣分的哦】
      5、......
__________________________________________________________________________________
查看: 1455|回复: 15

[蓬莱仙羽] 【Aladdin Unity3D Shader编程】之三 光照模型(二)

[复制链接]  [移动端链接]
排名
809
昨日变化
1

33

主题

485

帖子

2680

积分

Rank: 9Rank: 9Rank: 9

UID
1261
好友
37
蛮牛币
1717
威望
0
注册时间
2013-7-31
在线时间
639 小时
最后登录
2018-6-10

专栏作家社区QQ达人认证开发者

发表于 2017-11-8 19:22:54 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?注册帐号

x
本帖最后由 蓬莱仙羽 于 2017-11-28 10:49 编辑

高光反射模型
Specular=直射光*pow(cosθ,高光的参数) θ:是反射光和视野方向的夹角
编写高光反射Shader
[AppleScript] 纯文本查看 复制代码
Shader "AladdinShader/07 Specular Vertex Shader"
{
    Properties
    {
        _Diffuse("Diffuse",Color)=(1,1,1,1) //添加自身的颜色
    }
    SubShader {
        Pass 
        {
            Tags{"LightMode"="ForwardBase"}

        CGPROGRAM
#include "Lighting.cginc" //引用一些写好的程序块 会包含一些获取光照的信息  
//_LightColor0 取得第一个直射光的颜色
//_WorldSpaceLightPos0 

#pragma vertex vert
#pragma fragment frag 
    
        fixed4 _Diffuse;

        struct a2v 
        {
            float4 vertex:POSITION;
            float3 normal:NORMAL; //模型空间下法线
        };

        struct v2f
        {
            float4 position:SV_POSITION;
            fixed3 color:COLOR;
        };
        v2f vert(a2v v)
        {
            v2f f;
            f.position = mul(UNITY_MATRIX_MVP, v.vertex);
            fixed3 adbient = UNITY_LIGHTMODEL_AMBIENT.rgb;
            fixed3 normalDir = normalize(mul(v.normal,(float3x3)unity_WorldToObject));
            fixed3 lightDir = normalize(_WorldSpaceLightPos0.xyz);//对于每个顶点来说 光的位置就是光的方向 因为是平行光
            fixed3 diffuse = _LightColor0.rgb * max(dot(normalDir,lightDir), 0) * _Diffuse.rgb;//取得漫反射的颜色
            
            //反射光方向
            fixed3 reflectDir = normalize(reflect(-lightDir,normalDir));
            //视野方向
            //相机是在世界空间下              
            fixed3 viewDir = normalize(_WorldSpaceCameraPos.xyz - mul(v.vertex,unity_WorldToObject).xyz);

            //高光反射
            fixed3 specular = _LightColor0.rgb * pow(max(dot(reflectDir,viewDir),0),10);
            f.color = diffuse + adbient + specular;
            return f;
        }

        fixed4 frag(v2f f):SV_Target
        {
            return fixed4(f.color, 1);
        }

        ENDCG
        }
    }
    FallBack  "VertexLit"
}


效果图:
添加_Gloss和SpecularColor控制高光大小和高光颜色
添加一个Range属性,将X次幂的值改成Range属性,做如下修改:

[AppleScript] 纯文本查看 复制代码
_Gloss("Gloss",Range(8,200)) = 10
//高光反射
fixed3 specular = _LightColor0.rgb * pow(max(dot(reflectDir,viewDir),0),_Gloss);

就会看到高光光圈随着_Gloss改变而改变

想要改变高光部分的颜色控制,我们添加一个颜色变量然后将高光颜色与我们设置的颜色属性进行融合计算就会得到新的高光部分的颜色
[AppleScript] 纯文本查看 复制代码
Shader "AladdinShader/07 Specular Vertex Shader"
{
    Properties
    {
        _Diffuse("Diffuse",Color)=(1,1,1,1) //添加自身的颜色
        _Specular("Specular",Color)=(1,1,1,1)
        _Gloss("Gloss",Range(8,200)) = 10
    }
    SubShader {
        Pass 
        {
            Tags{"LightMode"="ForwardBase"}

        CGPROGRAM
#include "Lighting.cginc" //引用一些写好的程序块 会包含一些获取光照的信息  
//_LightColor0 取得第一个直射光的颜色
//_WorldSpaceLightPos0 

#pragma vertex vert
#pragma fragment frag 
    
        fixed4 _Diffuse;
        fixed4 _Specular;
        half _Gloss;

        struct a2v 
        {
            float4 vertex:POSITION;
            float3 normal:NORMAL; //模型空间下法线
        };

        struct v2f
        {
            float4 position:SV_POSITION;
            fixed3 color:COLOR;
        };
        v2f vert(a2v v)
        {
            v2f f;
            f.position = mul(UNITY_MATRIX_MVP, v.vertex);
            fixed3 adbient = UNITY_LIGHTMODEL_AMBIENT.rgb;
            fixed3 normalDir = normalize(mul(v.normal,(float3x3)unity_WorldToObject));
            fixed3 lightDir = normalize(_WorldSpaceLightPos0.xyz);//对于每个顶点来说 光的位置就是光的方向 因为是平行光
            fixed3 diffuse = _LightColor0.rgb * max(dot(normalDir,lightDir), 0) * _Diffuse.rgb;//取得漫反射的颜色
            
            //反射光方向
            fixed3 reflectDir = normalize(reflect(-lightDir,normalDir));
            //视野方向
            //相机是在世界空间下              
            fixed3 viewDir = normalize(_WorldSpaceCameraPos.xyz - mul(v.vertex,unity_WorldToObject).xyz);

            //高光反射
            fixed3 specular = _LightColor0.rgb * pow(max(dot(reflectDir,viewDir),0),_Gloss) * _Specular.rgb;
            f.color = diffuse + adbient + specular;
            return f;
        }

        fixed4 frag(v2f f):SV_Target
        {
            return fixed4(f.color, 1);
        }

        ENDCG
        }
    }
    FallBack  "VertexLit"
}


效果图:

实现逐像素的高光反射
[AppleScript] 纯文本查看 复制代码
Shader "AladdinShader/08 Specular Fragment Shader"
{
    Properties
    {
        _Diffuse("Diffuse",Color)=(1,1,1,1) //添加自身的颜色
        _Specular("Specular",Color)=(1,1,1,1)
        _Gloss("Gloss",Range(8,200)) = 10
    }
    SubShader {
        Pass 
        {
            Tags{"LightMode"="ForwardBase"}

        CGPROGRAM
#include "Lighting.cginc" //引用一些写好的程序块 会包含一些获取光照的信息  
//_LightColor0 取得第一个直射光的颜色
//_WorldSpaceLightPos0 

#pragma vertex vert
#pragma fragment frag 
    
        fixed4 _Diffuse;
        fixed4 _Specular;
        half _Gloss;

        struct a2v 
        {
            float4 vertex:POSITION;
            float3 normal:NORMAL; //模型空间下法线
        };

        struct v2f
        {
            float4 position:SV_POSITION;
            float3 worldNormal:TEXCOORD0;//世界空间下的法线方向 
            float3 worldVertext:TEXCOORD1;//时间空间下的顶点坐标
        };
        v2f vert(a2v v)
        {
            v2f f;
            f.position = mul(UNITY_MATRIX_MVP, v.vertex);
            f.worldNormal = mul(v.normal, (float3x3)unity_WorldToObject);
            f.worldVertext = mul(v.vertex , unity_WorldToObject).xyz;
            return f;
        }

        fixed4 frag(v2f f):SV_Target
        {
            fixed3 adbient = UNITY_LIGHTMODEL_AMBIENT.rgb;
            fixed3 normalDir = normalize(f.worldNormal);
            fixed3 lightDir = normalize(_WorldSpaceLightPos0.xyz);//对于每个顶点来说 光的位置就是光的方向 因为是平行光
            fixed3 diffuse = _LightColor0.rgb * max(dot(normalDir,lightDir), 0) * _Diffuse.rgb;//取得漫反射的颜色
            
            //反射光方向
            fixed3 reflectDir = normalize(reflect(-lightDir,normalDir));
            //视野方向
            //相机是在世界空间下              
            fixed3 viewDir = normalize(_WorldSpaceCameraPos.xyz - f.worldVertext);

            //高光反射
            fixed3 specular = _LightColor0.rgb * pow(max(dot(reflectDir,viewDir),0),_Gloss) * _Specular.rgb;
            fixed3 tempColor = diffuse + adbient + specular;
            return fixed4(tempColor, 1);
        }

        ENDCG
        }
    }
    FallBack  "VertexLit"
}



效果图:

会比逐顶点高光效果更好一些,背光面可以考虑之前说的半兰伯特来处理,这样就不会显示全黑效果不好的情况。
使用Blinn-Phong光照模型
Specular=直射光颜色*pow(max(cosθ,0),10) θ:是发现和x的夹角 x是平行光和视野方向的平分线
[AppleScript] 纯文本查看 复制代码
Shader "AladdinShader/09 Specular Fragment Blinn Phong Shader"
{
    Properties
    {
        _Diffuse("Diffuse",Color)=(1,1,1,1) //添加自身的颜色
        _Specular("Specular",Color)=(1,1,1,1)
        _Gloss("Gloss",Range(8,200)) = 10
    }
    SubShader {
        Pass 
        {
            Tags{"LightMode"="ForwardBase"}

        CGPROGRAM
#include "Lighting.cginc" //引用一些写好的程序块 会包含一些获取光照的信息  
//_LightColor0 取得第一个直射光的颜色
//_WorldSpaceLightPos0 

#pragma vertex vert
#pragma fragment frag 
    
        fixed4 _Diffuse;
        fixed4 _Specular;
        half _Gloss;

        struct a2v 
        {
            float4 vertex:POSITION;
            float3 normal:NORMAL; //模型空间下法线
        };

        struct v2f
        {
            float4 position:SV_POSITION;
            float3 worldNormal:TEXCOORD0;//世界空间下的法线方向 
            float3 worldVertext:TEXCOORD1;//时间空间下的顶点坐标
        };
        v2f vert(a2v v)
        {
            v2f f;
            f.position = mul(UNITY_MATRIX_MVP, v.vertex);
            f.worldNormal = mul(v.normal, (float3x3)unity_WorldToObject);
            f.worldVertext = mul(v.vertex , unity_WorldToObject).xyz;
            return f;
        }

        fixed4 frag(v2f f):SV_Target
        {
            fixed3 adbient = UNITY_LIGHTMODEL_AMBIENT.rgb;
            fixed3 normalDir = normalize(f.worldNormal);
            fixed3 lightDir = normalize(_WorldSpaceLightPos0.xyz);//对于每个顶点来说 光的位置就是光的方向 因为是平行光
            fixed3 diffuse = _LightColor0.rgb * max(dot(normalDir,lightDir), 0) * _Diffuse.rgb;//取得漫反射的颜色
            
            //反射光方向
            //fixed3 reflectDir = normalize(reflect(-lightDir,normalDir));
            //视野方向
            //相机是在世界空间下              
            fixed3 viewDir = normalize(_WorldSpaceCameraPos.xyz - f.worldVertext);

            //平分线
            fixed3 halfDir = normalize(viewDir + lightDir);  //视野方向和光照方向的平分线

            //高光反射
            fixed3 specular = _LightColor0.rgb * pow(max(dot(normalDir,halfDir),0),_Gloss) * _Specular.rgb;
            fixed3 tempColor = diffuse + adbient + specular;
            return fixed4(tempColor, 1);
        }

        ENDCG
        }
    }
    FallBack  "VertexLit"
}


会发现高光部分会显得更大了,这也是平时用的比较多的高光反射模型。
如何使用Unity的内置函数
UnityCG.cginc中一些常用的函数
//摄像机方向(视野方向)
  • float3 WorldSpaceViewDir(float4 v) 根据模型空间中的顶点坐标得到(世界空间)从这个点到摄像机的观察方向
  • float3 UnityWorldSpaceViewDir(float4 v) 世界空间中的顶点坐标=>世界空间从这个点到摄像机的观察方向
  • float3 ObjSpaceViewDir(float4 v) 模型空间中的顶点坐标=>模型空间从这个点到摄像机的观察方向
//光源方向
  • float3 WorldSpaceLightDir(float4 v) 模型空间中的顶点坐标=>世界空间中从这个点到光源的方向
  • float3 UnityWorldSpaceLightDir(float4 v) 世界空间中的顶点坐标=>世界空间中从这个点到光源的方向
  • float3 ObjSpaceLightDir(float4 v) 模型空间中的顶点坐标=>模型空间中从这个点到光源的方向
//方向转换
float3 UnityObjectToWorldNormal(float3 norm) 把法线方向 模型空间=>世界空间
float3 UnityObjectToWorldDir(float3 dir) 把方向 模型空间=>世界空间
float3 UnityWorldToObjectDir(float3 dir) 把方向 世界空间=>模型空间
上面BP模型修改:
[AppleScript] 纯文本查看 复制代码
Shader "AladdinShader/09 Specular Fragment Blinn Phong Shader"
{
    Properties
    {
        _Diffuse("Diffuse",Color)=(1,1,1,1) //添加自身的颜色
        _Specular("Specular",Color)=(1,1,1,1)
        _Gloss("Gloss",Range(8,200)) = 10
    }
    SubShader {
        Pass 
        {
            Tags{"LightMode"="ForwardBase"}

        CGPROGRAM
#include "Lighting.cginc" //引用一些写好的程序块 会包含一些获取光照的信息  
//_LightColor0 取得第一个直射光的颜色
//_WorldSpaceLightPos0 

#pragma vertex vert
#pragma fragment frag 
    
        fixed4 _Diffuse;
        fixed4 _Specular;
        half _Gloss;

        struct a2v 
        {
            float4 vertex:POSITION;
            float3 normal:NORMAL; //模型空间下法线
        };

        struct v2f
        {
            float4 position:SV_POSITION;
            float3 worldNormal:TEXCOORD0;//世界空间下的法线方向 
            float4 worldVertext:TEXCOORD1;//时间空间下的顶点坐标
        };
        v2f vert(a2v v)
        {
            v2f f;
            f.position = mul(UNITY_MATRIX_MVP, v.vertex);
            //法线从模型空间转成世界空间下
            // f.worldNormal = mul(v.normal, (float3x3)unity_WorldToObject);
            f.worldNormal = UnityObjectToWorldNormal(v.normal); //使用内置方法转换
            f.worldVertext = mul(v.vertex , unity_WorldToObject);
            return f;
        }

        fixed4 frag(v2f f):SV_Target
        {
            fixed3 adbient = UNITY_LIGHTMODEL_AMBIENT.rgb;
            fixed3 normalDir = normalize(f.worldNormal);

            //光源方向
            // fixed3 lightDir = normalize(_WorldSpaceLightPos0.xyz);//对于每个顶点来说 光的位置就是光的方向 因为是平行光
            fixed3 lightDir = normalize(WorldSpaceLightDir(f.worldVertext).xyz); //模型空间中的顶点坐标=>世界空间中从这个点到光源的方向

            fixed3 diffuse = _LightColor0.rgb * max(dot(normalDir,lightDir), 0) * _Diffuse.rgb;//取得漫反射的颜色
            
            //反射光方向
            //fixed3 reflectDir = normalize(reflect(-lightDir,normalDir));
            //视野方向
            //相机是在世界空间下              
            // fixed3 viewDir = normalize(_WorldSpaceCameraPos.xyz - f.worldVertext);
            fixed3 viewDir = normalize(UnityWorldSpaceViewDir(f.worldVertext));
            //平分线
            fixed3 halfDir = normalize(viewDir + lightDir);  //视野方向和光照方向的平分线

            //高光反射
            fixed3 specular = _LightColor0.rgb * pow(max(dot(normalDir,halfDir),0),_Gloss) * _Specular.rgb;
            fixed3 tempColor = diffuse + adbient + specular;
            return fixed4(tempColor, 1);
        }

        ENDCG
        }
    }
    FallBack  "VertexLit"
}


运行效果还是跟上面效果一样,BP模型是常用的模型,会发现背光面并没有一些奇怪的光斑,更符合生活常理。

漫反射和高光反射统一实现
[AppleScript] 纯文本查看 复制代码
Shader "AladdinShader/10 Diffuse Specular Shader"
{
    Properties
    {
        _Diffuse("Diffuse Color", Color)=(1,1,1,1)
        _Specular("Specular Color", Color)=(1,1,1,1)
        _Gloss("Gloss",Range(10,200))=20
    }
    SubShader {
        Pass{
            //只有正确定义Tags 才能获取跟光相关的属性
            Tags { "LightMode"="ForwardBase" }
            CGPROGRAM
#include "Lighting.cginc" 
#pragma vertex vert 
#pragma fragment frag 

            fixed4 _Diffuse;
            fixed4 _Specular;
            half _Gloss;
            //顶点函数参数
            struct a2v{
                float4 vertex:POSITION; //顶点位置
                float3 normal:NORMAL; //模型空间下的法线
            };

            struct v2f{
                float4 svPos:SV_POSITION;
                fixed3 worldNormal:TEXCOORD0;//世界空间下的法线
                float4 worldVertex:TEXCOORD1;
            };

            v2f vert(a2v v)
            {
                v2f f;
                f.svPos = mul(UNITY_MATRIX_MVP,v.vertex); //模型空间位置到剪裁空间的顶点位置的转换
                f.worldNormal = UnityObjectToWorldNormal(v.normal); //模型空间的法线转成时间空间下的法线
                f.worldVertex = mul(v.vertex,unity_WorldToObject);
                return f;
            } 

            //片元函数返回颜色
            fixed4 frag(v2f f):SV_Target{
                //漫反射
                //漫反射颜色 先不管透明度
                //_LightColor0 平行光的颜色 cos夹角 光的方向和视野的夹角
                fixed3 normalDir = normalize(f.worldNormal);
                //光的方向
                fixed3 lightDir = normalize(WorldSpaceLightDir(f.worldVertex));
                //漫反射的颜色
                fixed3 diffuse = _LightColor0.rgb *_Diffuse.rgb * max(dot(normalDir, lightDir),0);
                
                //相机方向
                fixed3 viewDir = normalize(UnityWorldSpaceViewDir(f.worldVertex));

                //光和相机方向的平分线
                fixed3 halfDir = normalize(lightDir + viewDir);
                //高光反射
                fixed3  specular = _LightColor0.rgb * _Specular.rgb * pow(max(dot(normalDir,halfDir),0),_Gloss);
                //环境光
                fixed3 tempColor = diffuse + specular + UNITY_LIGHTMODEL_AMBIENT.rgb;
                return fixed4(tempColor,1);
            }
            ENDCG
        }
    }
    FallBack  "Specular"
}



第四篇传送门:http://www.manew.com/thread-110393-1-1.html

Shader QQ交流群:316977780 请加群这自动查看群公告,并遵守规则!

原文链接: http://dingxiaowei.cn/

回复

使用道具 举报

排名
809
昨日变化
1

33

主题

485

帖子

2680

积分

Rank: 9Rank: 9Rank: 9

UID
1261
好友
37
蛮牛币
1717
威望
0
注册时间
2013-7-31
在线时间
639 小时
最后登录
2018-6-10

专栏作家社区QQ达人认证开发者

 楼主| 发表于 2017-11-8 19:23:06 | 显示全部楼层
Shader学习交流群:
316977780

回复 支持 反对

使用道具 举报

7日久生情
2535/5000
排名
3450
昨日变化
1

2

主题

1780

帖子

2535

积分

Rank: 7Rank: 7Rank: 7Rank: 7

UID
241666
好友
0
蛮牛币
10199
威望
0
注册时间
2017-9-6
在线时间
362 小时
最后登录
2018-6-7
发表于 2017-11-9 07:37:55 来自Mobile--- | 显示全部楼层
感谢分享

回复

使用道具 举报

7日久生情
4178/5000
排名
2744
昨日变化
3

5

主题

3111

帖子

4178

积分

Rank: 7Rank: 7Rank: 7Rank: 7

UID
209186
好友
5
蛮牛币
5190
威望
0
注册时间
2017-3-1
在线时间
586 小时
最后登录
2018-7-19
发表于 2017-11-9 09:05:03 | 显示全部楼层
谢谢分享

回复

使用道具 举报

4四处流浪
458/500
排名
9166
昨日变化
6

1

主题

230

帖子

458

积分

Rank: 4

UID
250900
好友
0
蛮牛币
45
威望
0
注册时间
2017-10-26
在线时间
116 小时
最后登录
2018-6-21
发表于 2017-11-10 11:04:12 | 显示全部楼层
6666666666

回复

使用道具 举报

5熟悉之中
750/1000
排名
5026
昨日变化
2

19

主题

349

帖子

750

积分

Rank: 5Rank: 5

UID
249218
好友
3
蛮牛币
2704
威望
0
注册时间
2017-10-17
在线时间
116 小时
最后登录
2018-7-20
发表于 2017-11-13 08:22:02 | 显示全部楼层
【Aladdin Unity3D Shader编程】之三 光照模型(二) [

回复 支持 反对

使用道具 举报

7日久生情
1848/5000
排名
2529
昨日变化
12

1

主题

900

帖子

1848

积分

Rank: 7Rank: 7Rank: 7Rank: 7

UID
216583
好友
2
蛮牛币
3127
威望
0
注册时间
2017-4-7
在线时间
433 小时
最后登录
2018-7-20
发表于 2017-11-13 12:58:01 | 显示全部楼层
谢谢分享

回复

使用道具 举报

4四处流浪
361/500
排名
60067
昨日变化
97

3

主题

203

帖子

361

积分

Rank: 4

UID
194191
好友
0
蛮牛币
261
威望
0
注册时间
2016-12-19
在线时间
153 小时
最后登录
2018-4-28
发表于 2017-11-13 14:24:58 | 显示全部楼层
神一般的楼主,,很给力

回复 支持 反对

使用道具 举报

5熟悉之中
603/1000
排名
4952
昨日变化

4

主题

150

帖子

603

积分

Rank: 5Rank: 5

UID
252485
好友
0
蛮牛币
892
威望
0
注册时间
2017-11-4
在线时间
187 小时
最后登录
2018-7-21
发表于 2017-11-13 23:46:47 | 显示全部楼层
7777777777777777

回复 支持 反对

使用道具 举报

7日久生情
2397/5000
排名
772
昨日变化
4

30

主题

501

帖子

2397

积分

Rank: 7Rank: 7Rank: 7Rank: 7

UID
124569
好友
25
蛮牛币
5467
威望
0
注册时间
2015-10-4
在线时间
732 小时
最后登录
2018-7-20
发表于 2017-11-14 09:24:48 | 显示全部楼层
感谢分享,楼主好人

回复 支持 反对

使用道具 举报

5熟悉之中
822/1000
排名
3739
昨日变化
15

0

主题

248

帖子

822

积分

Rank: 5Rank: 5

UID
228538
好友
7
蛮牛币
1364
威望
0
注册时间
2017-6-24
在线时间
218 小时
最后登录
2018-7-21
发表于 2017-11-15 09:34:29 | 显示全部楼层
感谢分享

回复

使用道具 举报

6蛮牛粉丝
1008/1500
排名
3313
昨日变化
1

1

主题

370

帖子

1008

积分

Rank: 6Rank: 6Rank: 6

UID
122160
好友
1
蛮牛币
1669
威望
0
注册时间
2015-9-10
在线时间
233 小时
最后登录
2018-7-6
发表于 2017-11-21 10:08:04 | 显示全部楼层
感谢分享

回复

使用道具 举报

5熟悉之中
750/1000
排名
5026
昨日变化
2

19

主题

349

帖子

750

积分

Rank: 5Rank: 5

UID
249218
好友
3
蛮牛币
2704
威望
0
注册时间
2017-10-17
在线时间
116 小时
最后登录
2018-7-20
发表于 2017-11-23 08:32:26 | 显示全部楼层
赞赞赞赞做做做做做做做做做做做做

回复 支持 反对

使用道具 举报

5熟悉之中
750/1000
排名
5026
昨日变化
2

19

主题

349

帖子

750

积分

Rank: 5Rank: 5

UID
249218
好友
3
蛮牛币
2704
威望
0
注册时间
2017-10-17
在线时间
116 小时
最后登录
2018-7-20
发表于 2017-11-29 09:29:22 | 显示全部楼层
赞赞赞赞做做做做做

回复 支持 反对

使用道具 举报

5熟悉之中
750/1000
排名
5026
昨日变化
2

19

主题

349

帖子

750

积分

Rank: 5Rank: 5

UID
249218
好友
3
蛮牛币
2704
威望
0
注册时间
2017-10-17
在线时间
116 小时
最后登录
2018-7-20
发表于 2017-11-29 09:34:08 | 显示全部楼层
先谢谢分享

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册帐号

本版积分规则

快速回复 返回顶部 返回列表