Abstract:
A texture encoding apparatus includes a texture data acquisition unit configured to acquire texture data of a texture set provided under a plurality of different conditions, a block segmentation unit configured to segment the texture data into a plurality of block data items each of which contains a plurality of pixel data items whose values corresponding to the conditions fall within a first range and whose pixel positions fall within a second range in the texture set, a block data encoding unit configured to encode each of the block data items to produce a plurality of encoded block data items, and a block data concatenation unit configured to concatenate the encoded block data items to generate an encoded data item of the texture set.

Description:
CROSS REFERENCE TO RELATED APPLICATIONS  
       [0001]     This is a Continuation Application of PCT Application No. PCT/JP2006/306772, filed Mar. 24, 2006, which was published under PCT Article 21(2) in English.  
         [0002]     This application is based upon and claims the benefit of priority from prior Japanese Patent Application No. 2005-210318, filed Jul. 20, 2005, the entire contents of which are incorporated herein by reference. 
     
    
     BACKGROUND OF THE INVENTION  
       [0003]     1. Field of the Invention  
         [0004]     The present invention relates to a texture encoding apparatus, texture decoding apparatus, method, and program having a high-quality texture mapping technique in the three-dimensional (3D) computer graphics field and, more particularly, to a texture encoding apparatus, texture decoding apparatus, method, and program, which compress a data amount by encoding texture data acquired or created under a plurality of conditions or efficiently decode and map texture data in texture mapping on a graphics LSI.  
         [0005]     2. Description of the Related Art  
         [0006]     In recent years, 3D computer graphics (CG) technology has made rapid advances, enabling very realistic graphics rendering that look like actually photographed scenes. However, most high-quality CGs for movies or TV are produced manually by their creators&#39; long laborious work at enormous cost. Since more diverse CG rendering is likely to be requested in the future, the challenge is to easily create high-quality CG at a low cost.  
         [0007]     In CG rendering, it is especially difficult to render cloth, skin, or hair. In such materials having a soft feel, it is very important to express the color of an object or the self shadow of an object, which changes depending on the direction to see the object (viewpoint direction) and the direction of lighting (light source direction). In a method often used recently, a material which exists actually is photographed, and its characteristic is reproduced to create realistic CG. For rendering of a surface feel corresponding to the viewpoint direction or light source direction, modeling methods called a bi-directional reference distribution function (BRDF), a bi-directional texture function (BTF), and polynomial texture maps (PTM) are being researched and developed (e.g., U.S. Pat. No. 6,297,834).  
         [0008]     When the optical characteristics of an object surface which change in accordance with the viewpoint direction or light source direction are to be rendered by using texture data, voluminous texture images under different conditions of the viewpoint direction or light source direction are necessary. Hence, no practical system is available presently.  
         [0009]     These methods employ an approach to derive a function model by analyzing acquired data. There is however a limit in converting irregular changes in shadow or luminance of an actually existing material, and many problems remain unsolved. One of the biggest problems is the enormous amount of data.  
       BRIEF SUMMARY OF THE INVENTION  
       [0010]     In accordance with a first aspect of the invention, there is provided a texture encoding apparatus comprising: a texture data acquisition unit configured to acquire texture data of a texture set provided under a plurality of different conditions; a block segmentation unit configured to segment the texture data into a plurality of block data items each of which contains a plurality of pixel data items whose values corresponding to the conditions fall within a first range and whose pixel positions fall within a second range in the texture set; a block data encoding unit configured to encode each of the block data items to produce a plurality of encoded block data items; and a block data concatenation unit configured to concatenate the encoded block data items to generate an encoded data item of the texture set.  
         [0011]     In accordance with a second aspect of the invention, there is provided a texture encoding apparatus comprising: a texture data acquisition unit configured to acquire texture data of a texture set provided under a plurality of different conditions; a block segmentation unit configured to segment the texture data into a plurality of block data items each of which contains a plurality of pixel data items whose values corresponding to the conditions fall within a first range and whose pixel positions fall within a second range in the texture set; a block data encoding unit configured to encode each of the block data items to produce a plurality of encoded block data items; an error calculation unit configured to calculate an encoding error of each of the encoded block data items; a comparison unit configured to compare, for each of the encoded block data items, the calculated encoding error with an allowance condition indicating an encoding error within a range; and a block data concatenation unit configured to concatenate the encoded block data items whose calculated encoding errors satisfy the allowance condition, wherein each of the block data items whose calculated encoding error fails to satisfy the allowance condition is segmented into a block data item having a smaller data amount than the segmented block data by the block segmentation unit.  
         [0012]     In accordance with a third aspect of the invention, there is provided a texture decoding apparatus comprising: an encoded data acquisition unit configured to acquire encoded data of a texture set provided under a plurality of different conditions; a designated data acquisition unit configured to acquire a plurality of texture coordinates for designating pixel positions and a conditional parameter for designating a condition in the conditions; a block data load unit configured to load, from the encoded data, a block data item corresponding to the texture coordinates and the conditional parameter; a block data decoding unit configured to decode the loaded block data item; and a pixel data calculation unit configured to calculate a plurality of pixel data items based on the decoded data item.  
         [0013]     In accordance with a fourth aspect of the invention, there is provided a texture decoding apparatus comprising: an encoded data acquisition unit configured to acquire encoded data of a texture set provided under a plurality of different conditions; an encoded data conversion unit configured to convert a size of a block contained in the encoded data into a fixed block size; a designated data acquisition unit configured to acquire a plurality of texture coordinates for designating pixel positions and a conditional parameter for designating a condition in the conditions; a block data load unit configured to load, from the converted encoded data, a block data item corresponding to the texture coordinates and the conditional parameter; a block data decoding unit configured to decode the loaded block data item; and a pixel data calculation unit configured to calculate a plurality of pixel data items based on the decoded block data item. 
     
    
     BRIEF DESCRIPTION OF THE SEVERAL VIEWS OF THE DRAWING  
       [0014]      FIG. 1  is a block diagram of a texture encoding apparatus according to the first embodiment of the present invention;  
         [0015]      FIG. 2  is a flowchart showing the operation of the texture encoding apparatus according to the first embodiment of the present invention;  
         [0016]      FIG. 3  is a view showing angle parameters which indicate a viewpoint and a light source position when an input unit shown in  FIG. 1  acquires texture;  
         [0017]      FIG. 4  is a view showing the distributions of pixel data and representative vectors;  
         [0018]      FIG. 5  is a view showing the encoding format of a block data encoded by an encoding method corresponding to  FIG. 4 ;  
         [0019]      FIG. 6  is a view showing a block data encoding using vector differences;  
         [0020]      FIG. 7  is a view showing the encoding format of a block data encoded by an encoding method corresponding to  FIG. 6 ;  
         [0021]      FIG. 8  is a view showing a block data encoding using an interpolation ratio;  
         [0022]      FIG. 9  is a view showing the encoding format of a block data encoded by an encoding method corresponding to  FIG. 8 ;  
         [0023]      FIG. 10  is a view showing a block data encoding using an index which only instructs interpolation;  
         [0024]      FIG. 11  is a view showing the encoding format of a block data encoded by an encoding method corresponding to  FIG. 10 ;  
         [0025]      FIG. 12  is a view showing the encoding format of a block data using a macro block or a code book of the entire texture;  
         [0026]      FIG. 13  is a view showing the encoding format of a block data segmented for each vector component;  
         [0027]      FIG. 14  is a view showing the encoded data structure of a texture set;  
         [0028]      FIG. 15  is a view showing the outline of processing of the texture encoding apparatus shown in  FIG. 1 ;  
         [0029]      FIG. 16  is a view showing the outline of conventional processing corresponding to  FIG. 15 ;  
         [0030]      FIG. 17  is a flowchart showing a calculation method of a representative vector which is calculated in step S 203  in  FIG. 2 ;  
         [0031]      FIG. 18  is a flowchart showing a block segmentation method by a texture encoding apparatus according to the second embodiment of the present invention;  
         [0032]      FIG. 19  is a block diagram of the texture encoding apparatus which segments a block by using an encoding error in the second embodiment of the present invention;  
         [0033]      FIG. 20  is a view showing an encoded data structure containing block addressing data to be used in the texture encoding apparatus shown in  FIG. 19 ;  
         [0034]      FIG. 21  is a block diagram of a texture decoding apparatus according to the third embodiment of the present invention;  
         [0035]      FIG. 22  is a flowchart showing the operation of the texture decoding apparatus shown in  FIG. 21 ;  
         [0036]      FIGS. 23A and 23B  are views showing a texture data layout method based on u and v directions;  
         [0037]      FIGS. 24A and 24B  are views showing a texture data layout method based on a θ direction;  
         [0038]      FIGS. 25A and 25B  are views showing a texture data layout method based on a φ direction;  
         [0039]      FIGS. 26A and 26B  are views showing a method which slightly changes the texture data layout in  FIGS. 24A and 25A ;  
         [0040]      FIG. 27  is a block diagram of a texture decoding apparatus according to the fourth embodiment of the present invention; and  
         [0041]      FIG. 28  is a view showing conversion from a flexible block size to a fixed block size. 
     
    
     DETAILED DESCRIPTION OF THE INVENTION  
       [0042]     A texture encoding apparatus, texture decoding apparatus, method, and program according to the embodiments of the present invention will be described below in detail with reference to the accompanying drawing.  
         [0043]     According to the texture encoding apparatus, method, and program of the embodiments, the data amount can be compressed. According to the texture decoding apparatus, method, and program, the processing speed of loading required pixel data can also be increased.  
         [0044]     The texture encoding apparatus, texture decoding apparatus, method, and program according to the embodiments of the present invention are an apparatus, method, and program to encode or decode a texture set acquired or created under a plurality of conditions including different viewpoints and light sources and execute texture mapping processing for graphics data.  
         [0045]     The texture encoding apparatus, texture decoding apparatus, method, and program according to the embodiments of the present invention can efficiently implement texture rendering of a material surface which changes in accordance with the viewpoint direction or light source direction and can also be applied to various conditions or various components.  
         [0046]     Application to various conditions indicates that the embodiment of the present invention can also be applied to a signal which changes depending on not only the viewpoint condition or light source condition but also various conditions such as the time, speed, acceleration, pressure, temperature, and humidity in the natural world.  
         [0047]     Application to various components indicates that the embodiment of the present invention can be applied not only to a color component as a pixel data but also to, e.g., a normal vector component, depth component, transparency component, or illumination effect component.  
         [0000]     (First Embodiment)  
         [0048]     In the first embodiment, an example of a series of processing operations of a texture encoding apparatus will be described. A block segmentation unit of this embodiment executes segmentation in a fixed block size. Processing of causing various a block data encoding means to encode a block data segmented in a fixed size will be described in detail.  
         [0049]     The arrangement of the texture encoding apparatus according to this embodiment will be described with reference to  FIG. 1 .  
         [0050]     The texture encoding apparatus shown in  FIG. 1  receives a texture set acquired or created under a plurality of different conditions, segments the data into blocks in the pixel position direction and condition change direction (e.g., the light source direction and viewpoint direction), and encodes each block.  
         [0051]     The texture encoding apparatus of this embodiment comprises an input unit  101 , block segmentation unit  102 , block data encoding unit  103 , block data concatenation unit  104 , and output unit  105 .  
         [0052]     The input unit  101  inputs data of a texture set acquired or created under a plurality of different conditions.  
         [0053]     The block segmentation unit  102  segments the data of the texture set into a plurality of block data by forming a block which contains a plurality of pixel data having close acquisition conditions and close pixel positions in the texture set input by the input unit  101 .  
         [0054]     The block data encoding unit  103  encodes each block data segmented by the block segmentation unit  102 .  
         [0055]     The block data concatenation unit  104  concatenates the block data encoded by the block data encoding unit  103  to generate encoded data of the texture set.  
         [0056]     The output unit  105  outputs the encoded data of the texture set generated by the block data concatenation unit  104 .  
         [0057]     The operation of the texture encoding apparatus according to this embodiment will be described with reference to  FIG. 2 .  
         [0000]     &lt;Step S 201 &gt; 
         [0058]     The input unit  101  inputs data of a texture set. In a space shown in  FIG. 3 , textures are acquired while changing the viewpoint and light source position (i.e., θc, φc, θl, and φl shown in  FIG. 3 ) at a predetermined interval.  
         [0059]     The input unit  101  acquires textures while changing the angles as shown in Table 1. The units are degrees. In this case,  18  texture samples are acquired in the θ direction by changing the viewpoint and light source at an interval of 20° while 8 texture samples are acquired in the φ direction by changing the viewpoint and light source up to 70° at an interval of 10°. Hence, a total of 20,736 (18×8×18×8) textures are acquired. If the texture size is 256×256 pixels (24 bit colors), the data amount is about 3.8 GB and cannot be handled practically as a texture material to be used for texture mapping.  
                                                   TABLE 1                           Θ c     0   20   40   60   80   100   120   140   160           180   200   220   240   260   280   300   320   340       Φ c     0   10   20   30   40   50   60   70       Θ l     0   20   40   60   80   100   120   140   160           180   200   220   240   260   280   300   320   340       Φ l     0   10   20   30   40   50   60   70                  
 
         [0060]     A method of expressing a texture of an arbitrary size by small texture data by using, e.g., a higher-order texture generation technique can be used. In this higher-order texture generation technique, using a texture set acquired or created under a plurality of different conditions, a texture of an arbitrary size is reproduced only by generating a texture set of an arbitrary size corresponding to each condition and holding the data of the small texture set. If the texture size can be 32×32 pixels, the data amount is about 60 MB. However, the texture data is not compressed yet sufficiently and must be further compressed.  
         [0000]     &lt;Step S 202 &gt; 
         [0061]     Next, the block segmentation unit  102  segments the acquired texture set into blocks. In this block segmentation processing, pixel data having close parameter numerical values are regarded as one set and put into a block. A parameter here indicates a variable representing a position or condition to load the pixel data, including u representing the horizontal texture coordinate, v representing the vertical texture coordinate, θc or φc representing the condition of the viewpoint direction, and θl or φl representing the condition of the light source direction. In this embodiment, the pixel data can be loaded by using six-dimensional parameters: (u, v, θc, φc, θl, φl).  
         [0062]     The number of the pixel data to be contained in one block can be freely determined. In this embodiment, data is segmented into blocks having a fixed size. For example, assume that pixel data are sampled at the same pixel position twice at each of four dimensions θc, φc, θl, and φl, and the acquired pixel data is put in one block. In this case, one block data has a structure shown in Table 2.  
                                                                               TABLE 2                           u   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0       V   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0       θ c     0   0   0   0   0   0   0   0   20   20   20   20   20   20   20   20       φ c     0   0   0   0   10   10   10   10   0   0   0   0   10   10   10   10       θ l     0   0   20   20   0   0   20   20   0   0   20   20   0   0   20   20       φ l     0   10   0   10   0   10   0   10   0   10   0   10   0   10   0   10                  
 
         [0063]     Table 2 shows that 16 pixel data is put into one block, including pixel data loaded under a condition (u, v, θc, φc, θl, φl)=(0, 0, 0, 0, 0, 0) and pixel data which satisfies the combinations of the respective columns. When the block segmentation unit  102  executes such block formation, for example, 20,736 textures each having a size of 32×32 pixels, i.e., 21,233,664 (=20,736×32×32) pixel data is segmented into 1,327,104 (=21,233,664÷16) block data.  
         [0064]     The block segmentation unit  102  can also execute block segmentation in the dimensions u and v, i.e., in the texture space direction. In this embodiment, however, only pixel data at the same pixel position is contained in a block. This is because encoding at the same pixel position is suitable for the above-described higher-order texture generation technique. With this segmentation method, the feature of each pixel can be checked approximately in the encoded data so that the similarity between pixels can easily be checked. Hence, after encoding the texture set, mapping to graphics data may be done after a texture of an arbitrary size is generated.  
         [0000]     &lt;Steps S 203  and S 204 &gt; 
         [0065]     Next, the block data encoding unit  103  encodes each block data. Step S 203  is performed until all block data is encoded (step S 204 ). In the block data encoding processing, for example, four representative vectors are calculated from 16 pixel data (color vector data ) by using vector quantization. The representative vector calculation method will be described later with reference to  FIG. 17 . As the calculation method, the well-known vector quantization called K-means or LBG is used.  
         [0066]     If 16 pixel data (hatched circles) has a distribution shown in  FIG. 4 , representative vectors indicated by filled circles can be obtained by vector quantization. Thus obtained representative vectors &lt;C 0 &gt;, &lt;C 1 &gt;, &lt;C 2 &gt;, and &lt;C 3 &gt; are defined as code book data in the block (&lt;A&gt; represents “vector A”; vectors will be expressed according to this notation hereinafter). Index data representing which representative vector is selected by each of the 16 pixel data is expressed by 2 bits.  
         [0067]      FIG. 5  shows the format of the encoded block data. According to the rule, &lt;C 0 &gt; is selected if index data is “00”, &lt;C 1 &gt; for “01”, &lt;C 2 &gt; for “ 10 ”, and &lt;C 3 &gt; for “11”. In this way, the representative vector for decoding is selected in accordance with the value of index data. This is the most basic encoding method. Alternatively, encoding methods to be described below can be used. Five examples will be described here.  
         [0000]     1. &lt;&lt;Encoding Using Vector Differences&gt;&gt; 
         [0068]     Until obtaining four representative vectors, the processing is executed by the same method as described above. Then, one of the representative vectors is defined as a reference vector. The remaining representative vectors are converted into vectors representing variations from the reference vector.  FIG. 6  shows this state. After the representative vectors &lt;C 0 &gt;, &lt;C 1 &gt;, &lt;C 2 &gt;, and &lt;C 3 &gt; are obtained, three vector differences &lt;S 1 &gt;, &lt;S 2 &gt;, and &lt;S 3 &gt; given by 
 
&lt; S   1   &gt;=&lt;C   1   &gt;−&lt;C   0 &gt;, 
 
&lt; S   2   &gt;=&lt;C   2   &gt;−&lt;C   0 &gt;, 
 
&lt; S   3   &gt;=&lt;C   3   &gt;−&lt;C   0 &gt;
 
 are obtained.  FIG. 7  shows encoded data with a code book containing a thus calculated representative vector and vector differences. The method of encoding data by using vector differences is very effective for a material whose color does not change so much in accordance with a change of the viewpoint direction or light source direction. This is because a vector difference only needs to express a variation, and to do this, assignment of a small number of bits suffices. The balance between the number of representative vectors and the number of vector differences may be changed depending on the color vector distribution. When a reference vector capable of minimizing vector differences is selected from the representative vectors &lt;C 0 &gt;, &lt;C 1 &gt;, &lt;C 2 &gt;, and &lt;C 3 &gt;, the number of bits to be assigned to each vector difference can further be decreased. 
 
 2. &lt;&lt;Encoding Using Interpolation Ratio&gt;&gt;
 
         [0069]     Until obtaining four representative vectors, the processing is executed by the same method as described above. Then, calculation is executed to approximately express one representative vector by interpolating two of the remaining representative vectors.  FIG. 8  shows a detailed example. In this case, an interpolation ratio is calculated to approximately express &lt;C 3 &gt; by using &lt;C 0 &gt; and &lt;C 1 &gt;. A perpendicular is drawn from the point &lt;C 3 &gt; to the line segment &lt;C 0 &gt;&lt;C 1 &gt;, and its foot is defined as a point &lt;C 3 &gt;′. An interpolation ratio r 3  is derived by the following calculation. 
 
 r   3   =|&lt;C   0   &gt;&lt;C   3   &gt;′|/|&lt;C   0   &gt;&lt;C   1 &gt;|
 
         [0070]      FIG. 9  shows encoded data with a code book containing thus calculated representative vectors and interpolation ratio. The method of encoding data by using an interpolation ratio is very effective for a material whose color linearly changes in accordance with a change of the viewpoint direction or light source direction. This is because the error is small even when the representative vector is approximated by using an interpolation ratio. In addition, a representative vector capable of minimizing the error even in approximation is selected as a representative vector to be approximated by an interpolation ratio.  
         [0000]     3. &lt;&lt;Encoding Using Index Which Only Instructs Interpolation&gt;&gt; 
         [0071]     Assume that 16 pixel data (hatched circles) has a distribution shown in  FIG. 10 , and vectors &lt;P 0 &gt;, &lt;P 1 &gt;, and &lt;P 2 &gt; are pixel data which can be loaded under the following conditions (u, v, θc, φc, θl, φl). 
 
&lt;P 0 &gt;:(0,0,0,0,0,0), 
 
&lt;P 1 &gt;:(0,0,0,10,0,0), 
 
&lt;P 2 &gt;:(0,0,0,20,0,0) 
 
         [0072]     That is, the vectors &lt;P 0 &gt;, &lt;P 1 &gt;, and &lt;P 2 &gt; are three pixel data obtained by changing φc as the condition of the viewpoint direction to 0°, 10°, and 20°. This distribution is examined before obtaining representative vectors. The color vector &lt;P 1 &gt; is not necessary at all and can be obtained by executing interpolation based on the conditional parameters of &lt;P 0 &gt; and &lt;P 2 &gt;. Hence, the color vector &lt;P 1 &gt; can be reproduced only by using index data which instructs interpolation based on the conditional parameters. That is, 
 
&lt; P   1 &gt;=0.5 ×&lt;P   0 &gt;+0.5 ×&lt;P   2 &gt;
 
 In fact, &lt;P 0 &gt; and &lt;P 2 &gt; are reproduced by using the representative vectors &lt;C 0 &gt; and &lt;C 2 &gt;. 
 
         [0073]      FIG. 11  shows the format of thus encoded block data. Index data can be assigned such that C 0  is selected if index data is “00”, C 1  for “01”, and C 2  for “10”. If the index data is “ 11 ”, the representative vector is obtained by interpolating other pixel data based on the conditional parameters. This method can be regarded as very characteristic encoding when block formation is executed based on conditional dimensions such as the viewpoint direction and light source direction.  
         [0000]     4. &lt;&lt;Encoding Using Macro Block or Code Book of Entire Texture&gt;&gt; 
         [0074]     Several encoding methods have been described above. In some cases, part of code book data calculated in a block data is common to part of a peripheral block data. In such a case, code book data common to a plurality of block data can be set. A set of several peripheral blocks is called a macro block. The macro block can have common code book data or code book data of the entire texture. For example, assume that the representative vectors C 0 , C 1 , C 2 , and C 3  are obtained in a given block, and four peripheral blocks also use C 3  as a representative vector. At this time, encoding is executed by using the format shown in  FIG. 12 , and C 3  is stored not as a block data but as a code book data of a macro block. This encoding method must be used carefully because the decoding speed decreases although the data amount compression efficiency can be increased.  
         [0000]     5. &lt;&lt;Encoding of Data Segmented for Each Vector Component&gt;&gt; 
         [0075]     Encoding of data segmented for each vector component will be described with reference to  FIG. 13 . The color vector of each pixel can be expressed not only by the RGB colorimetric system but also by various colorimetric systems. A YUV colorimetric system capable of dividing a color vector into a luminance component and color difference components will be exemplified here. The color of a pixel changes variously depending on the material in accordance with the viewpoint direction or light source direction. In some materials, the luminance component changes greatly, and the color difference components change moderately. In such a case, encoding shown in  FIG. 13  can be performed. As the luminance component, Y 0 , Y 1 , Y 2 , or Y 3  is used. As the color difference component, UV 0  is used. Since the color difference component rarely changes in a block, UV 0  is always used independently of the value of index data. The luminance component largely changes in a block. Hence, four representative vectors (in this case, scalar values) are stored by the normal method, and one of them is selected based on index data.  
         [0076]     As shown in the above example, efficiently encoding can be executed by assigning a large code amount to a component that changes greatly and assigning a small code amount to a component which changes moderately.  
         [0077]     Several encoding formats can be set in the above-described way. More diverse encoding formats can be set by appropriately combining these encoding methods.  
         [0078]     The encoding format can be either fixed or flexible in texture data. When a flexible format is used, an identifier that indicates the format used in each block data is necessary as header information.  
         [0000]     &lt;Steps S 205  and S 206 &gt; 
         [0079]     The block data concatenation unit  104  concatenates the encoded block data. When the block data encoded by various methods is concatenated, a data structure shown in  FIG. 14  is obtained. Header information is stored in the encoded texture data. The header information contains a texture size, texture set acquisition conditions, and encoding format. Macro block data concatenated to the header information is stored next. If the encoding format does not change for each macro block, or no code book representing the macro blocks is set, not the macro block but the block data can be concatenated directly. If the encoding format is designated for each macro block, header information is stored at the start of each macro block. If a code book representing the macro blocks is to be set, the code book data is stored next to the header information. Then, block data present in each macro block data item is connected. If the format changes for each block, header information is stored first, and code book data and index data are stored next.  
         [0080]     Finally, thus concatenated texture data is output (step S 206 ).  
         [0081]      FIG. 15  shows the outline of processing of the texture encoding apparatus described with reference to  FIG. 2 .  FIG. 16  shows the outline of processing of a conventional texture encoding apparatus in contrast with the processing of the texture encoding apparatus of this embodiment. As is apparent from comparison between  FIGS. 15 and 16 , the texture encoding apparatus of the embodiment of the present invention executes not only block formation of the texture space but also block formation considering the dimensions of acquisition conditions. As a consequence, according to the texture encoding apparatus of this embodiment, the frequency of texture loading with a heavy load can normally be reduced.  
         [0082]     The representative vector calculation method in step S 203  will be described next with reference to  FIG. 17 . For details, see, e.g., Jpn. Pat. Appln. KOKAI No. 2004-104621.  
         [0083]     In processing after initial setting (m=4, n=1, δ) (step S 1701 ), clustering is executed to calculate four representative vectors. In sequentially dividing a cluster into two parts, the variance of each cluster is calculated, and a cluster with a large variance is divided into two parts preferentially (step S 1702 ). To divide a given cluster into two parts, two initial centroids (cluster centers) are determined (step S 1703 ). A centroid is determined in accordance with the following procedures. 
    1. A barycenter g of the cluster is obtained.     2. An element farthest from g is defined as d 0 .     3. An element farthest from d 0  is defined as d 1 .     4. The 1:2 interior division points between g and d 0  and between g and d 1  are defined as C 0  and C 1 , respectively.    
 
         [0088]     As the distance between two elements, the Euclidean distance in the RGB 3D space is used. In loop processing in steps S 1704  to S 1706 , the same processing as K-Means as a well-known clustering algorithm is executed.  
         [0089]     With the above-described procedures, the four representative vectors &lt;C 0 &gt;, &lt;C 1 &gt;, &lt;C 2 &gt;, and &lt;C 3 &gt; can be obtained (step S 1710 ).  
         [0090]     According to the above-described first embodiment, when fixed block segmentation is to be executed in texture data, the data amount can be compressed by encoding a texture set which changes in accordance with the condition such as the viewpoint direction or light source direction. In addition, the compression effect can be increased by changing the block segmentation method in accordance with the features of the material.  
         [0000]     (Second Embodiment)  
         [0091]     In the second embodiment, a texture encoding apparatus which segments data based on a flexible block size. Especially, how to adaptively execute block segmentation by a block segmentation unit  102  will be described.  
         [0092]     In this embodiment, an example of block segmentation (step S 202 ) processing by the block segmentation unit  102  of a texture encoding apparatus shown in  FIG. 1  will be described. In the first embodiment, block segmentation based on a fixed block size is executed in texture data. In the second embodiment, the block size is adaptively changed. For flexible block segmentation, for example, the following two methods can be used.  
         [0000]     1. &lt;&lt;Flexible Block Segmentation Based on Variance Value&gt;&gt; 
         [0093]     The first method is implemented without changing the apparatus arrangement shown in  FIG. 1 . The block segmentation unit  102  first executes processing of checking what kinds of block segmentation should be executed.  FIG. 18  shows an example of processing procedures.  
         [0094]     First, entire data of a texture set is set as one large block data (step S 1801 ). The variance values of all pixel data present in the block data item are calculated (step S 1802 ). It is determined whether the variance value is smaller than a preset threshold value (step S 1803 ). If YES in step S 1803 , the block segmentation processing is ended without changing the current block segmentation state. If NO in step S 1803 , the dimension which increases the variance of the block is detected (step S 1804 ). More specifically, a dimension whose vector difference depending on the change in the dimension is largest is selected. In that dimension, the block is segmented into two parts (step S 1805 ). Then, the flow returns to processing in step S 1802 . When all segmented blocks have a variance value smaller than the threshold value, the processing is ended.  
         [0095]     This is the most basic processing method. The block in the initial state may be a fixed block having a size predetermined to some extent. As the end condition, not the upper limit of the variance value but the minimum block size may be designated.  
         [0000]     2. &lt;&lt;Flexible Block Segmentation Based on Encoding Error&gt;&gt; 
         [0096]     In the second method, the segmentation method is determined by using the block segmentation unit  102  and a block data encoding unit  103 . In this case, the apparatus arrangement shown in  FIG. 1  must be changed slightly.  FIG. 19  shows the changed apparatus arrangement. Unlike the apparatus shown in  FIG. 1 , an encoding error calculation unit  1901  and encoding error comparison unit  1902  are added to the succeeding stage of the block data encoding unit  103 . The same reference numerals as those of the already described components denote the same parts in  FIG. 19 , and a description thereof will be omitted.  
         [0097]     The encoding error calculation unit  1901  executes the same processing as the block data encoding unit  103  and calculates the encoding error by comparing original data with decoded data.  
         [0098]     The encoding error comparison unit  1902  compares the encoding error calculated by the encoding error calculation unit  1901  with an allowance condition that indicates the allowable range of the encoding error. The allowance condition defines that, e.g., the encoding error is smaller than a threshold value. In this case, a block whose encoding error calculated by the encoding error calculation unit  1901  is smaller than the threshold value is output to a block data concatenation unit  104 . For a block whose encoding error is equal to or larger than the threshold value, the processing returns to the block segmentation unit  102 . That is, the block segmentation unit  102  segments the block into smaller blocks, and then, encoding is executed again. In other words, each block data is segmented into data with a data amount smaller than the preceding time and encoded again.  
         [0099]     Two flexible block segmentation methods have been described above. When blocks are segmented by such a method, “block addressing data” indicating a block to which pixel data belongs is necessary because no regular block segmentation is done.  FIG. 20  shows an encoded data structure containing block addressing data. For the sake of simplicity, the concept of macro blocks and the code book data outside the block data is excluded. Block addressing data is stored between header information and block data. The block addressing data stores table data which indicates a correspondence between parameters to load a pixel data and an ID number (block number) assigned to the block data. The block addressing data plays an important role to access a block data in processing of decoding data encoded based on a flexible block size, which will be described later in the fourth embodiment.  
         [0100]     According to the above-described second embodiment, when flexible block segmentation is to be executed in texture data, the data amount can be compressed by encoding a texture set which changes in accordance with the condition such as the viewpoint direction or light source direction.  
         [0101]     The data of a texture set encoded by the texture encoding apparatus according to the first or second embodiment of the present invention can be stored in a database and made open to the public over a network.  
         [0000]     (Third Embodiment)  
         [0102]     In the third embodiment, data of a texture set encoded based on a fixed block size is input. How to decode the input encoded data and map it to graphics data will be described. In this embodiment, an example of a series of processing operations of a texture decoding apparatus (including a mapping unit) will be described.  
         [0103]     The texture decoding apparatus according to this embodiment will be described with reference to  FIG. 21 .  
         [0104]     The outline will be described first. The texture decoding apparatus shown in  FIG. 21  receives texture data encoded by the texture encoding apparatus described in the first or second embodiment, decodes specific pixel data based on designated texture coordinates and conditional parameters, and maps the decoded data to graphics data.  
         [0105]     The texture decoding apparatus comprises an input unit  2101 , block data load unit  2102 , block data decoding unit  2103 , pixel data calculation unit  2104 , mapping unit  2105 , and output unit  2106 .  
         [0106]     The input unit  2101  inputs encoded data of a texture set acquired or created under a plurality of different conditions.  
         [0107]     The block data load unit  2102  receives texture coordinates which designate a pixel position and conditional parameters which designate conditions and loads block data containing the designated data from the encoded data input by the input unit  2101 .  
         [0108]     The block data decoding unit  2103  decodes the block data loaded by the block data load unit  2102  to original data before it is encoded by the block data encoding unit  103  of the texture encoding apparatus described in the first or second embodiment.  
         [0109]     The pixel data calculation unit  2104  calculates pixel data based on the data decoded by the block data decoding unit  2103 .  
         [0110]     The mapping unit  2105  receives graphics data as a texture mapping target and a mapping parameter which designates the texture mapping method and maps the pixel data calculated by the pixel data calculation unit  2104  to the received graphics data based on the received mapping parameter.  
         [0111]     The output unit  2106  outputs the graphics data mapped by the mapping means.  
         [0112]     The operation of the texture decoding apparatus shown in  FIG. 21  will be described next with reference to  FIG. 22 .  
         [0000]     &lt;Step S 2201 &gt; 
         [0113]     In the texture decoding apparatus of this embodiment, first, the input unit  2101  inputs encoded data of a texture set. At the time of input, the input unit  2101  reads out the header information of the encoded data and checks the texture size, texture set acquisition conditions, and encoding format.  
         [0000]     &lt;Step S 2202 &gt; 
         [0114]     Next, the block data load unit  2102  receives texture coordinates and conditional parameters. These parameters are obtained from the texture coordinates set for each vertex of graphics data and scene information such as the camera position or light source position.  
         [0000]     &lt;Step S 2203 &gt; 
         [0115]     The block data load unit  2102  loads a block data. In this embodiment, block segmentation is executed by using a fixed block size. Hence, the block data load unit  2102  can access a block data containing pixel data based on received texture coordinates u and v and conditional parameters θc, φc, θl, and φl.  
         [0116]     Note that in some cases, the obtained conditional parameters do not completely match the original conditions for texture acquisition. In such a case, it is necessary to extract all existing pixel data with close conditions and interpolate them. For example, the condition of the closest texture sample smaller than θc is defined as θc 0 , and the condition of the closest texture sample equal to or larger than θc is defined as θc 1 . Similarly, φc 0 , φc 1 , θl 0 , θl 1 , φl 0 , and φl 1  are defined. All pixel data which satisfy these conditions is loaded. The pixel data to be loaded is the following 16 pixel data c 0  to c 15 .  
         [0117]     c 0 =getPixel(θc 0 , φc 0 , θl 0 , φl 0 , us, vs)  
         [0118]     c 1 =getPixel(θc 0 , φc 0 , θl 0 , φl 1 , us, vs)  
         [0119]     c 2 =getPixel(θc 0 , φc 0 , θl 1 , φl 0 , us, vs)  
         [0120]     c 3 =getPixel(θc 0 , φc 0 , θl 1 , φl 1 , us, vs)  
         [0121]     c 4 =getPixel(θc 0 , φc 1 , θl 0 , φl 0 , us, vs)  
         [0122]     c 5 =getPixel(θc 0 , φc 1 , θl 0 , φl 1 , us, vs)  
         [0123]     c 6 =getPixel(θc 0 , φc 1 , θl 1 , φl 0 , us, vs)  
         [0124]     c 7 =getPixel(θc 0 , φc 1 , θl 1 , φl 1 , us, vs)  
         [0125]     c 8 =getPixel(θc 1 , φc 0 , θl 0 , φl 0 , us, vs)  
         [0126]     c 9 =getPixel(θc 1 , φc 0 , θl 0 , φl 1 , us, vs)  
         [0127]     c 10 =getPixel(θc 1 , φc 0 , θl 1 , φl 0 , us, vs)  
         [0128]     c 11 =getPixel(θc 1 , φc 0 , θl 1 , φl 1 , us, vs)  
         [0129]     c 12 =getPixel(θc 1 , φc 1 , θl 0 , φl 0 , us, vs)  
         [0130]     c 13 =getPixel(θc 1 , φc 1 , θl 0 , φl 1 , us, vs)  
         [0131]     c 14 =getPixel(θc 1 , φc 1 , θl 1 , φl 0 , us, vs)  
         [0132]     c 15 =getPixel(θc 1 , φc 1 , θl 1 , φl 1 , us, vs) 
 
 where us and vs are texture coordinates input in this example, and getPixel is a function to extract pixel data based on the conditional parameters and the 6-dimensional parameters of the texture coordinates. When the 16 pixel data is interpolated in the following way, final the pixel data c can be loaded.  
               c   _     =       ⁢         (     1   -     ɛ   ⁢           ⁢   0       )     ×     (     1   -     ɛ   ⁢           ⁢   1       )     ×     (     1   -     ɛ   ⁢           ⁢   2       )     ×     (     1   -     ɛ   ⁢           ⁢   3       )     ×   c   ⁢           ⁢   0     +                     ⁢         (     1   -     ɛ   ⁢           ⁢   0       )     ×     (     1   -     ɛ   ⁢           ⁢   1       )     ×     (     1   -     ɛ   ⁢           ⁢   2       )     ×   ɛ   ⁢           ⁢   3   ×   c   ⁢           ⁢   1     +                     ⁢         (     1   -     ɛ   ⁢           ⁢   0       )     ×     (     1   -     ɛ   ⁢           ⁢   1       )     ×   ɛ   ⁢           ⁢   2   ×     (     1   -     ɛ   ⁢           ⁢   3       )     ×   c   ⁢           ⁢   2     +                     ⁢         (     1   -     ɛ   ⁢           ⁢   0       )     ×     (     1   -     ɛ   ⁢           ⁢   1       )     ×   ɛ   ⁢           ⁢   2   ×   ɛ   ⁢           ⁢   3   ×   c   ⁢           ⁢   3     +                     ⁢         (     1   -     ɛ   ⁢           ⁢   0       )     ×   ɛ   ⁢           ⁢   1   ×     (     1   -     ɛ   ⁢           ⁢   2       )     ×     (     1   -     ɛ   ⁢           ⁢   3       )     ×   c   ⁢           ⁢   4     +                     ⁢         (     1   -     ɛ   ⁢           ⁢   0       )     ×   ɛ   ⁢           ⁢   1   ×     (     1   -     ɛ   ⁢           ⁢   2       )     ×   ɛ   ⁢           ⁢   3   ×   c   ⁢           ⁢   5     +                     ⁢         (     1   -     ɛ   ⁢           ⁢   0       )     ×   ɛ   ⁢           ⁢   1   ×   ɛ   ⁢           ⁢   2   ×     (     1   -     ɛ   ⁢           ⁢   3       )     ×   c   ⁢           ⁢   6     +                     ⁢         (     1   -     ɛ   ⁢           ⁢   0       )     ×   ɛ   ⁢           ⁢   1   ×   ɛ   ⁢           ⁢   2   ×   ɛ   ⁢           ⁢   3   ×   c   ⁢           ⁢   7     +                     ⁢       ɛ   ⁢           ⁢   0   ×     (     1   -     ɛ   ⁢           ⁢   1       )     ×     (     1   -     ɛ   ⁢           ⁢   2       )     ×     (     1   -   ɛ3     )     ×   c   ⁢           ⁢   8     +                     ⁢       ɛ   ⁢           ⁢   0   ×     (     1   -     ɛ   ⁢           ⁢   1       )     ×     (     1   -     ɛ   ⁢           ⁢   2       )     ×   ɛ   ⁢           ⁢   3   ×   c   ⁢           ⁢   9     +                     ⁢       ɛ   ⁢           ⁢   0   ×     (     1   -     ɛ   ⁢           ⁢   1       )     ×   ɛ   ⁢           ⁢   2   ×     (     1   -     ɛ   ⁢           ⁢   3       )     ×   c   ⁢           ⁢   10     +                     ⁢       ɛ   ⁢           ⁢   0   ×     (     1   -     ɛ   ⁢           ⁢   1       )     ×   ɛ   ⁢           ⁢   2   ×   ɛ   ⁢           ⁢   3   ×   c   ⁢           ⁢   11     +                     ⁢       ɛ   ⁢           ⁢   0   ×   ɛ   ⁢           ⁢   1   ×     (     1   -     ɛ   ⁢           ⁢   2       )     ×     (     1   -     ɛ   ⁢           ⁢   3       )     ×   c   ⁢           ⁢   12     +                     ⁢       ɛ   ⁢           ⁢   0   ×   ɛ   ⁢           ⁢   1   ×     (     1   -     ɛ   ⁢           ⁢   2       )     ×   ɛ   ⁢           ⁢   3   ×   c   ⁢           ⁢   13     +                     ⁢       ɛ   ⁢           ⁢   0   ×   ɛ   ⁢           ⁢   1   ×   ɛ   ⁢           ⁢   2   ×     (     1   -     ɛ   ⁢           ⁢   3       )     ×   c   ⁢           ⁢   14     +                     ⁢     ɛ   ⁢           ⁢   0   ×   ɛ   ⁢           ⁢   1   ×   ɛ   ⁢           ⁢   2   ×   ɛ   ⁢           ⁢   3   ×   c   ⁢           ⁢   15               
 
 The interpolation ratios ε 0 , ε 1 , ε 2 , and ε 3  are calculated in the following way. 
 
ε0=(θ c−θc 0)/(θ c 1 −θc 0) 
 
ε1=(φ c−φc 0)/(φ c 1 −φc 0) 
 
ε2=(θ l−θl 0)/(θ l 1 −θl 0) 
 
ε3=(φ l−φl 0)/(φ l 1 −φl 0) 
 
         [0133]     As described above, to calculate one pixel data, 16 pixel data must be loaded and interpolated. The noteworthy point is that the encoded data proposed in this embodiment contains pixel data of adjacent conditions is present in the same block data. Hence, all the 16 pixel data is sometimes contained in the same block data. In that case, interpolated pixel data can be calculated only by loaded one block data. In some cases, however, 2 to 16 block data must be extracted. Hence, the number of times of extraction must be changed in accordance with the conditional parameters.  
         [0134]     As is known, the number of texture load instructions (processing of extracting a pixel data or a block data) generally influences the execution rate in the graphics LSI. When the number of texture load instructions is made as small as possible, the rendering speed can be increased. Hence, the encoding method proposed in the embodiment of the present invention is a method to implement faster texture mapping.  
         [0000]     &lt;Step S 2204 &gt; 
         [0135]     The block data decoding unit  2103  decodes the block data. The method of decoding a block data and extracting specific a pixel data changes slightly depending on the encoding format. Basically, however, the decoding method is determined by referring to the index data of a pixel to be extracted. A representative vector indicated by the index data is directly extracted, or a vector changed by the vector difference from a reference vector is extracted. Alternatively, a vector obtained by interpolating two vectors is extracted. The vectors are decoded based on a rule determined at the time of encoding.  
         [0000]     &lt;Step S 2205 &gt; 
         [0136]     The pixel data calculation unit  2104  extracts pixel data. As described above, 16 pixel data is interpolated by using the above-described equations.  
         [0000]     &lt;Steps S 2206 , S 2207 , and S 2208 &gt; 
         [0137]     The mapping unit  2105  receives graphics data and mapping parameter (step S 2206 ) and maps pixel data in accordance with the mapping parameter (step S 2207 ). Finally, the output unit  2106  outputs the graphics data which has undergone texture mapping (step S 2208 ).  
         [0138]     A change in texture mapping processing speed (rendering performance) depending on the texture layout method will be described next with reference to  FIGS. 23A, 23B ,  24 A,  24 B,  25 A,  25 B,  26 A, and  26 B.  
         [0139]     The rendering performance on the graphics LSI largely depends on the texture layout method. In this embodiment, a texture expressed by 6-dimensional parameters (u, v, θc, φc, θl, φl) is taken as an example of a higher-order texture. The number of times of pixel data loading or the hit ratio to a texture cache on hardware changes depending on the layout of texture data stored in the memory of the graphics LSI. The rendering performance also changes depending on the texture layout. Even in encoding a higher-order texture, it is necessary to segment and concatenate a block data in consideration of this point. This also applies to an uncompressed higher-order texture.  
         [0140]     The difference between the texture layout methods will be described below.  FIG. 23A  shows a 2D texture in which textures having the sum of changes in the u and v directions (so-called normal textures) are laid out as tiles in accordance with a change in the θ direction and also laid out as tiles in accordance with a change in the φ direction. In this layout method, pixel data corresponding to the changes in the u and v directions is stored at adjacent pixel positions. Hence, interpolated pixel data can be extracted at high speed by using the bi-linear function of the graphics LSI. However, if a higher-order texture is generated, and a higher-order texture of an arbitrary size is expressed from a small texture sample, the u and v positions are determined by indices. No consecutive u or v values are always designated. Hence, the bi-linear function of the graphics LSI cannot be used.  
         [0141]     On the other hand, pixel data corresponding to the change in θ or φ direction is stored at separate pixel positions. Hence, pixel data must be extracted a plurality of times by calculating the texture coordinates, and interpolation calculation must be done on software. The texture cache hit ratio will be considered. The hit ratio is determined depending on the proximity of texture coordinates referred to in obtaining an adjacent pixel value of a frame to be rendered. Hence, the texture cache can easily be hit in the layout method shown in  FIG. 23A . This is because adjacent pixels in the u and v directions have similar θ or φ conditions in most cases.  
         [0142]      FIG. 23B  shows a 3D texture in which textures having the sum of changes in the u and v directions are laid out as tiles in accordance with a change in the φ direction and also stacked in the layer direction (height direction) in accordance with a change in the θ direction. In this layout, interpolation in the θ1 direction can also be done by hardware in addition to bi-linear in the u and v directions. That is, interpolation calculation using the tri-linear function of a 3D texture can be executed. Hence, the frequency of texture loading can be reduced as compared to  FIG. 23A . The texture cache hit ratio is not so different from  FIG. 23A . Since the frequency of texture loading decreases, faster rendering is accordingly possible.  
         [0143]      FIGS. 24A and 25A  show 2D textures in which textures having the sum of changes in the θ and φ directions are laid out as tiles in accordance with changes in the φ and θ directions and also laid out as tiles in accordance with changes in the u and v directions. In these layout methods, pixel data corresponding to the changes in the θ and φ directions is stored at adjacent pixel positions. Hence, interpolated pixel data can be extracted at high speed by using the bi-linear function of the graphics LSI. On the other hand, pixel data corresponding to the changes in the φ direction, θ direction, or u or v direction is stored at separate pixel positions. Hence, pixel data must be extracted a plurality of times by calculating the texture coordinates, and interpolation calculation must be done in software.  
         [0144]     The texture cache hit.ratio is lower than in the layout method shown in  FIG. 23A  because pixel data corresponding to the changes in the u or v direction is stored at separate pixel positions. To improve it, the layout is changed to that shown in  FIG. 26A  or  26 B. Then, the texture cache hit ratio increases, and the rendering performance can be improved. Because tiles corresponding to the changes in the u or v direction are laid out at closer positions, closer texture coordinates are referred to in obtaining an adjacent pixel value of a frame to be rendered.  
         [0145]      FIGS. 24B and 25B  show 3D textures in which textures having the sum of changes in the θ and φ directions are laid out as tiles in accordance with changes in the u and v directions and also stacked in the layer direction (height direction) in accordance with changes in the φ and θ directions. In these layout methods, interpolation in the φ1 and θ1 directions can also be done by hardware in addition to bi-linear in the θ and φ directions. That is, interpolation calculation using the tri-linear function of a 3D texture can be executed. Hence, referring to  FIGS. 24B and 25B , the frequency of texture loading can be reduced as compared to  FIGS. 25A and 26A . The texture cache hit ratio can be made higher as compared to  FIGS. 25A and 26A . In the 2D texture, tiles corresponding to the changes in u and v directions are at separate position. In the 3D texture, pixel data with uv close to the layer direction (height direction) and close θ1 or φ1 is present.  
         [0146]     As described above, the frequency of texture loading or texture cache hit ratio changes depending on the texture layout method so that the rendering performance changes greatly. When the texture layout method is determined in consideration of this characteristic, and block formation method determination, encoding, and block data concatenation are executed, more efficient higher-order texture mapping can be implemented.  
         [0147]     For example, in  FIG. 24A , when data is segmented into blocks two-dimensionally in the θc and θl directions and encoded, the encoded data can be stored on the memory of the graphics LSI by the layout method as shown in  FIG. 24A . In mapping, the bi-linear function of the hardware can be used.  
         [0148]     According to the above-described third embodiment, when data of a texture set encoded based on a fixed block size is to be input, the texture mapping processing speed on the graphics LSI can be increased by encoding a texture set which changes in accordance with the condition such as the viewpoint direction or light source direction.  
         [0000]     (Fourth Embodiment)  
         [0149]     In the fourth embodiment, processing of a texture decoding apparatus (including a mapping unit) when data of a texture set encoded based on a flexible block size is input will be described. Especially, how to cause a block data load unit to access a block data will be described.  
         [0150]     The operation of the texture decoding apparatus according to this embodiment will be described. The blocks included in the texture decoding apparatus are the same as in  FIG. 21 . An example of processing of block data load (step S 2203 ) executed by a block data load unit  2102  will be described.  
         [0151]     In the third embodiment, texture data encoded based on a fixed block size is processed. In the fourth embodiment, texture data encoded based on a flexible block size is processed. For example, the following two methods can be used to appropriately access and load a block data in texture data encoded based on a flexible block size.  
         [0000]     1. &lt;&lt;Block Data Load Using Block Addressing Data&gt;&gt; 
         [0152]     As described in the second embodiment, when encoding based on a flexible block size is executed, block addressing data is contained in encoded data. Hence, after texture coordinates and conditional parameters are input, the block data load unit  2102  can check a block data to be accessed by collating the input six-dimensional parameters with the block addressing data. Processing after access to designated the block data is the same as that described in the third embodiment.  
         [0000]     2. &lt;&lt;Block Data Load Using Encoded Data Conversion&gt;&gt; 
         [0153]     In the second method, the block data is loaded after encoded data conversion processing. In this case, the apparatus arrangement shown in  FIG. 22  must be changed slightly.  FIG. 27  shows the changed apparatus arrangement. Only an encoded data conversion unit  2701  in  FIG. 27  is different from  FIG. 21 . The encoded data conversion unit  2701  is set at the preceding stage of the block data load unit  2102  and at the succeeding stage of an input unit  2101 .  
         [0154]     The encoded data conversion unit  2701  converts a texture data encoded based on a flexible block size into an encoded data of a fixed block size. The encoded data conversion unit  2701  accesses a block data of a flexible size by using block addressing data. After conversion to a fixed size, the block addressing data is unnecessary and is therefore deleted.  
         [0155]      FIG. 28  schematically shows conversion from a flexible block size to a fixed block size. To convert a block segmented based on a flexible size to a larger size, calculation must be executed in the same amount as in re-encoding processing. On the other hand, conversion to a size smaller than a block segmented based on the flexible size can be implemented by calculation as simple as decoding processing. Hence, the latter conversion is executed. Processing after conversion to encoded data of a fixed size is the same as that described in the third embodiment.  
         [0156]     Two block data load methods in encoded data of a flexible block size have been described. In the method using block addressing data, mapping can be done in a small data amount. However, in every pixel processing, block addressing data must be referred to. This indicates that the number of texture load instructions increases by one, affecting the rendering speed.  
         [0157]     In the method using encoded data conversion, conversion to data of a fixed block size is done immediately before storing the data in the internal video memory of the graphics LSI. Hence, rendering can be executed at a relatively high speed. However, when the fixed block size is used, the data amount becomes relatively large. Since all these methods have both merits and demerits, they must appropriately be selected in accordance with the complexity of the texture material or the specifications of the graphics LSI.  
         [0158]     According to the above-described fourth embodiment, when data of a texture set encoded based on a flexible block size is to be input, the texture mapping processing speed on the graphics LSI can be increased by encoding a texture set which changes in accordance with the condition such as the viewpoint direction or light source direction.  
         [0159]     Additional advantages and modifications will readily occur to those skilled in the art. Therefore, the invention in its broader aspects is not limited to the specific details and representative embodiments shown and described herein. Accordingly, various modifications may be made without departing from the spirit or scope of the general inventive concept as defined by the appended claims and their equivalents.