标签: rendering

关于缩放标签云中的标签

我正在移动设备上实现标签云.数据模型等的细节在这里并不是特别重要.我的问题是关于标记的缩放:

将标签频率映射到字体大小的"最佳"表达式是什么?

我已经看过这篇讨论线性和对数缩放的帖子,这个答案来自Adrian Kuhn关于灵感的多项式方法的草图.但是,我似乎记得在网站上的一些帖子,在这个问题上有更多的探索.

我也在博客上发现了一些" 最佳实践 ",但我不确定最佳实践的基本原理.这些都没有对频率缩放做出评论.

我有哪些替代标签缩放,哪种是首选/标准方法?我也在考虑最小字体,最大标签数量,颜色等.

编辑:根据这个问题的讨论,我对"标准"tagcloud感兴趣,字体大小变化.

language-agnostic user-interface tagging rendering tag-cloud

6
推荐指数
1
解决办法
530
查看次数

与使用WPF中的画笔相比,渲染大量重复图像的效果是否更高或更低?

我们公司正在开发的一个应用程序目前显示许多带有渐变的矩形形状来绘制"Tiles".内部讨论提出了一个表现问题.这些图块大约为100像素乘200像素,并且是渐变阴影红色,黄色或绿色.在任何给定时间,屏幕上最多可以有100个这样的图块.难道是更好的性能,我们为每个创建的图像(红,黄,绿),并在必要时重复它,或者它会更好,我们继续使用标准WPF画笔绘制呢?

编辑:为了澄清,我们使用的渐变画笔是LinearGradientBrush.

wpf performance rendering image brushes

6
推荐指数
1
解决办法
376
查看次数

HTML Canvas - 围绕圆圈的虚线描边

我知道在画布上渲染的虚线描边线没有原生支持,但我已经看到了人们能够为此提供支持的聪明方法.

我想知道的是,是否有任何方法可以将其转换为允许在形状(特别是圆形)周围渲染虚线笔划?

html5 rendering canvas dotted-line

6
推荐指数
2
解决办法
9338
查看次数

3D图形:法线贴图与凹凸贴图?

我知道法线贴图描述了在不增加多边形数量的情况下向网格添加细节的过程,并且这是通过使用特定的普通纹理来操纵光线应用于对象的方式来实现的.好的.

  • 但是什么是凹凸贴图呢?它只是普通映射的另一个术语吗?
  • 视觉效果如何比较?两种技术可以结合起来吗?

opengl directx 3d graphics rendering

6
推荐指数
2
解决办法
1716
查看次数

大型几何体GL_REPEAT上的OpenGL ES 2.0纹理扭曲

OpenGL ES 2.0在纹理采样方面存在严重的精度问题 - 我见过类似问题的主题,但我还没有看到这个"扭曲的OpenGL ES 2.0纹理"问题的真正解决方案.

这与纹理的图像格式或OpenGL颜色缓冲区无关,似乎是精度错误.我不知道究竟是什么原因导致精度失败 - 它似乎不仅仅是导致这种失真的几何尺寸,因为简单地缩放传递给顶点着色器的顶点位置并不能解决问题.


以下是纹理失真的一些示例:

纹理问题仅限于OpenGL ES 2.0上的小规模几何体,否则纹理采样看起来是正常的,但是颗粒效果会逐渐恶化顶点数据距离XYZ原点(0,0,0)

桌面OpenGL上不会出现这些纹理问题(在Windows XP,Windows 7和Mac OS X下正常工作)

我只看到Android,iPhone或WebGL上出现问题(类似于OpenGL ES 2.0)


所有纹理都是2的幂,但问题仍然存在

  • 缩放顶点数据 - 顶点的XYZ位置的值在以下范围内:-65536到+65536浮点

    • 我意识到这是大的,所以我试图用1024除以顶点位置收缩的几何形状和希望得到更准确的浮点精确度,但这并没有解决或减少纹理失真问题
  • 缩放模型视图或缩放投影矩阵没有帮助

  • 更改纹理过滤选项没有帮助

    • 禁用mipmapping或使用GL_NEAREST/GL_LINEAR不会执行任何操作
    • 启用/禁用各向异性不会做任何事情
    • 即使使用GL_CLAMP,仍会出现条带效应
  • 将传递给顶点着色器的纹理坐标划分,然后将它们乘以片段着色器中的正确值,也不起作用

  • 精密highp sampler2D,highp浮动,highp INT -在片段或顶点着色器没有任何改变(lowp/mediump也不起作用)

我认为这个问题必须在某一点上得到解决 - 看到基于OpenGL ES 2.0的游戏已经能够渲染出大规模,高度详细的几何

iphone rendering texture-mapping distortion opengl-es-2.0

6
推荐指数
1
解决办法
1371
查看次数

webkit-font-smoothing:在chrome和safari中突然出现不同的结果

我以前在两个webkit浏览器(Chrome和Safari)中都有相同的输出但突然(我不知道我可以改变Chrome中的渲染看起来很糟糕.

这是我的HTML

<li class="cat-item term term-workshops"><a href="/workshops">Workshops</a></li>
Run Code Online (Sandbox Code Playgroud)

这是我的CSS

.term a {
    display:inline-block;
    height:1em;
    -webkit-font-smoothing:antialiased;
    -moz-font-smoothing:antialiased;
    font-smoothing:antialiased;
    text-rendering:optimizeLegibility;
    font-smooth:always;
}

.term-workshops a {
    text-transform:lowercase;
    font-family:"Custom-Family", sans-serif;
    font-size:1.4em;
    margin-top:.1em;
}
Run Code Online (Sandbox Code Playgroud)

Safari中的输出看起来不错(以前在Chrome中看起来一样)

苹果浏览器

Chrome中的输出看起来很蹩脚

苹果浏览器

知道为什么会对两个webkit浏览器产生影响吗?我知道它在Firefox中看起来很糟糕,因为没有font-smoothing选项,但如果可能的话,在Chrome和Safari中应该看起来一样.

我可以在我的CSS中改变输出看起来突然不同的东西?我知道两种浏览器看起来都一样!

css fonts rendering webfonts font-face

6
推荐指数
1
解决办法
1万
查看次数

6
推荐指数
1
解决办法
8330
查看次数

OpenGL状态冗余消除树,呈现状态优先级

我正在我的游戏引擎中使用自动OpenGL批处理方法,以减少绘制调用和冗余调用.

我的批处理树设计从最昂贵的状态开始,并为每个较便宜的状态添加叶子.

示例:树根:着色器/程序兄弟:混合状态... aso

所以我的问题是这个列表中最有可能是最昂贵的电话:

  • 约束计划
  • 绑定纹理
  • 绑定缓冲区
  • 缓冲纹理,顶点数据
  • 绑定渲染目标
  • glEnable/glDisable
  • 混合状态方程,颜色,函数,colorWriteMask
  • 深度模板状态depthFunc,stencilOperations,stencilFunction,writeMasks

还想知道哪种方法会更快:
- 将所有可处理的绘制命令收集到单个顶点缓冲区并仅调用1个绘制调用(此方法也会强制更新cpu侧每个顶点的矩阵变换)
- 不要批处理并渲染很多小绘制调用,只有批处理粒子系统......

PS:渲染目标将始终更改为Pre或Post,具体取决于使用情况.

迄今取得的进展:

  • Andon M. Coleman:最便宜的均匀和顶点阵列绑定,昂贵的FBO,纹理绑定
  • datenwolf:程序使State Cache无效

1:帧缓冲状态
2:程序
3:纹理绑定
...
N:顶点数组绑定,统一绑定

WebGL中的当前执行树:

  • 程序
  • 属性指针
  • 质地
  • 混合状态
  • 深度国家
  • 模具前/后状态
  • 光栅化州
  • 采样器状态
  • 绑定缓冲区
  • 绘制数组

每个步骤都是一个兄弟哈希树,以避免再次检查主渲染队列中的状态缓存

加载纹理/程序/着色器/缓冲区在渲染到额外队列之前发生,以便将来进行多线程处理,并确保在对其执行任何操作之前初始化上下文.

自渲染对象的最大问题是你无法控制什么时候发生的事情,例如如果开发人员在gl初始化之前调用这些方法,他就不知道为什么会有一些错误或问题...

opengl rendering opengl-es directx-11 batching

6
推荐指数
1
解决办法
1560
查看次数

透视投影:证明1/z是线性的吗?

在3D渲染(或几何形状)中,在光栅化算法中,当您将三角形的顶点投影到屏幕上然后查找像素是否与2D三角形重叠时,通常需要找到深度或z坐标像素重叠的三角形.通常,该方法包括计算三角形的2D"投影"图像中的像素的重心坐标,然后使用这些坐标来内插三角形原始顶点z坐标(在顶点被投影之前).

现在它写在所有教科书中,你不能直接插入顶点的顶点坐标,但你需要这样做:

(抱歉不能让乳胶工作?)

1/z = w0*1/v0.z + w1*1/v1.z + w2*1/v2.z

其中w0,w1和w2是三角形上"像素"的重心坐标.

现在,我正在照顾的是两件事:

  • 什么是表明插值z不起作用的正式证明?
  • 什么是证明1/z做正确的事情的正式证明?

为了表明这不是家庭作业;-)而且我自己做了一些工作,我找到了问题2的以下解释.

基本上,三角形可以由平面方程定义.这样你就可以写:

Ax + By + Cz = D.

然后你将z隔离得到z =(D - Ax - By)/ C.

然后你将这个公式除以z,就像你用透视除法一样,如果你开发,重新组合等,你得到:

1/z = C/D + A/D x/z + B/D y/z.

然后我们将C'= C/D B'= B/D命名为A'= A/D:

1/z = A'x/z + B'y/z + C'

它说x/z和y/z只是一旦投影在屏幕上三角形上的点的坐标,右边的等式是"仿射"函数,因此1/z是线性函数???

这对我来说似乎不是一个示范?或者这可能是正确的想法,但不能通过查看这是一个仿射函数的等式来说明你怎么说.如果你将所有条款相乘,你得到:

A'x + B'y + C'z = 1.

这基本上就是我们原来的方程式(只需用适当的术语代替A'B'和C').

geometry rendering perspective

6
推荐指数
1
解决办法
421
查看次数

Chrome DevTools:慢帧,但没有导致它们的事件

当您在Chrome开发工具的时间轴中有慢帧(用红色三角形表示的那些帧)时,这意味着什么,但它没有显示导致它的原因(脚本,渲染,合成等).这就像没有真正发生但你仍然有janks.

Chrome DevTools时间轴视图

performance rendering google-chrome google-chrome-devtools

6
推荐指数
1
解决办法
624
查看次数