前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >纹理拼接后的Wrap寻址

纹理拼接后的Wrap寻址

作者头像
逍遥剑客
发布2018-05-23 10:27:19
6050
发布2018-05-23 10:27:19
举报

拼接后的纹理:

正常的草地(不进行WRAP寻址):

WRAP = 5时的情况:

MinFilter = Linear时的情况:

shader实现:

float4x4 matViewProjection; float4 Light_Position; float4 Light_Attenuation; float4 Light_Color; float4 Ambient_Color; float4 vViewPosition; float alpha;

struct VS_INPUT { float4 Position : POSITION0; float3 Normal    : NORMAL0; float2 Texcoord : TEXCOORD0; };

struct VS_OUTPUT { float4 Position : POSITION0; float2 Texcoord : TEXCOORD0; float4 Color     : COLOR0; };

float4 PointLighting(float3 position, float3 normal                     , float3 eyedir, float4 ambient                    , float3 lightpos, float3 lightatt, float4 lightcolor) { float3 lightdir = normalize(position - lightpos); float3 dis = distance(position, lightpos); float disatt = saturate(1 / ( lightatt.x + lightatt.y * dis + lightatt.z * dis * dis )); float angleatt = saturate(-lightdir * normal); float3 reflectdir = normalize(reflect(lightdir, normal)); float specularatt = pow(saturate(reflectdir * eyedir), alpha);     return ambient + lightcolor * disatt * (angleatt + specularatt); }

VS_OUTPUT vs_main( VS_INPUT Input ) {    VS_OUTPUT Output;

   Output.Position = mul( Input.Position, matViewProjection );    Output.Texcoord = Input.Texcoord; float3 eyedir = normalize(vViewPosition - Input.Position);    Output.Color = PointLighting(Input.Position, Input.Normal                        , eyedir, Ambient_Color                        , Light_Position, Light_Attenuation, Light_Color);

   return( Output ); }

Reference:

ShaderX3 : Improved Batching via Texture Atlases

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2008年11月03日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档