By-example synthesis of architectural textures

Sylvain Lefebvre, Samuel Hornus, Anass Lasram
2010 ACM SIGGRAPH 2010 papers on - SIGGRAPH '10  
the annual ACM SIGGRAPH conference.) This additional material first shows more synthesis results in Section 5 and give further details and illustrates the way our synthesised textures are filtered in the GPU fragment shader in Section 1 While the main paper gives a complete description of our system for synthesizing architectural textures, there is also a number of small algorithmic improvements that build on the special nature of our problem and provide a faster implementation. We describe
more » ... here, since they are not specifically related to the core of our synthesis system. They deal with Dijkstra's algorithm (Section 2, page 1), the integration of a histogram computation into Dijkstra's algorithm's inner loop (Section 3, page 3) and the fast construction of the graph G (Section 4, page 4). Many notations that are used here are defined in the main paper and not redefined here. Please refer to the paper for their definition. Filtering As described in the paper, textures are rendered by transforming texture coordinates to locations in the source image. This simple transformation leads to visible seams around the cuts when using hardware filtering. In fact texels on each side of a cut are not contiguous in the source image. To circumvent the problem, we sample two additional texels having the same coordinate as the current texel but belonging to the previous and the next strip. The three resulting texels are blended depending on the MIP-map level and the distance between the current texel and the two borders of the current strip. Figure 1 highlights the approach. Figure 2 reports the performance and limitations of the proposed filtering approach. The approach provide very good results for the first levels of detail and enable correct anisotropy. The coarsest MIP-map levels however, show some discontinuities due to multiple strips within the filter width. In practice, these discontinuities are not perceived because the textured surface is far enough from the viewer. A specialized implementation for Dijkstra's algorithm Basics We compute shortest paths that start from some node n = (c , z 0 ) in G. The graph nodes are processed in order of increasing distance from n . (The distance from n to node n is the cost of the shortest path connecting them, as defined in the main paper). To do so, we store the unprocessed nodes in a priority 1
doi:10.1145/1833349.1778821 fatcat:h5s456pmercw5f7meoecthdl6y