当前位置: 首页>>代码示例>>C#>>正文


C# Texture.Evaluate方法代码示例

本文整理汇总了C#中Texture.Evaluate方法的典型用法代码示例。如果您正苦于以下问题:C# Texture.Evaluate方法的具体用法?C# Texture.Evaluate怎么用?C# Texture.Evaluate使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在Texture的用法示例。


在下文中一共展示了Texture.Evaluate方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。

示例1: Bump

        protected static DifferentialGeometry Bump(Texture<float> d,
            DifferentialGeometry dgGeom,
            DifferentialGeometry dgs)
        {
            // Compute offset positions and evaluate displacement texture
            DifferentialGeometry dgEval = dgs;

            // Shift _dgEval_ _du_ in the $u$ direction
            float du = .5f * (Math.Abs(dgs.DuDx) + Math.Abs(dgs.DuDy));
            if (du == 0.0f)
                du = .01f;
            dgEval.Point = dgs.Point + du * dgs.DpDu;
            dgEval.U = dgs.U + du;
            dgEval.Normal = Normal.Normalize((Normal) Vector.Cross(dgs.DpDu, dgs.DpDv) +
                du * dgs.DnDu);
            float uDisplace = d.Evaluate(dgEval);

            // Shift _dgEval_ _dv_ in the $v$ direction
            float dv = .5f * (Math.Abs(dgs.DvDx) + Math.Abs(dgs.DvDy));
            if (dv == 0.0f)
                dv = .01f;
            dgEval.Point = dgs.Point + dv * dgs.DpDv;
            dgEval.U = dgs.U;
            dgEval.V = dgs.V + dv;
            dgEval.Normal = Normal.Normalize((Normal) Vector.Cross(dgs.DpDu, dgs.DpDv) + dv * dgs.DnDv);
            float vDisplace = d.Evaluate(dgEval);
            float displace = d.Evaluate(dgs);

            // Compute bump-mapped differential geometry
            var dgBump = dgs.Clone();
            dgBump.DpDu = dgs.DpDu + (uDisplace - displace) / du * (Vector)dgs.Normal +
                displace * (Vector)dgs.DnDu;
            dgBump.DpDv = dgs.DpDv + (vDisplace - displace) / dv * (Vector)dgs.Normal +
                displace * (Vector)dgs.DnDv;
            dgBump.Normal = (Normal) Vector.Normalize(Vector.Cross(dgBump.DpDu, dgBump.DpDv));
            if (dgs.Shape.ReverseOrientation ^ dgs.Shape.TransformSwapsHandedness)
                dgBump.Normal *= -1.0f;

            // Orient shading normal to match geometric normal
            dgBump.Normal = Normal.FaceForward(dgBump.Normal, dgGeom.Normal);

            return dgBump;
        }
开发者ID:modulexcite,项目名称:aether,代码行数:43,代码来源:Material.cs


注:本文中的Texture.Evaluate方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。