﻿<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ja">
	<id>https://wiki.blender.jp/index.php?action=history&amp;feed=atom&amp;title=%E5%88%A9%E7%94%A8%E8%80%85%3AJoeedh%2FSummerOfCode2007</id>
	<title>利用者:Joeedh/SummerOfCode2007 - 版の履歴</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.blender.jp/index.php?action=history&amp;feed=atom&amp;title=%E5%88%A9%E7%94%A8%E8%80%85%3AJoeedh%2FSummerOfCode2007"/>
	<link rel="alternate" type="text/html" href="https://wiki.blender.jp/index.php?title=%E5%88%A9%E7%94%A8%E8%80%85:Joeedh/SummerOfCode2007&amp;action=history"/>
	<updated>2026-06-02T20:11:40Z</updated>
	<subtitle>このウィキのこのページに関する変更履歴</subtitle>
	<generator>MediaWiki 1.31.0</generator>
	<entry>
		<id>https://wiki.blender.jp/index.php?title=%E5%88%A9%E7%94%A8%E8%80%85:Joeedh/SummerOfCode2007&amp;diff=54698&amp;oldid=prev</id>
		<title>Yamyam: 1版 をインポートしました</title>
		<link rel="alternate" type="text/html" href="https://wiki.blender.jp/index.php?title=%E5%88%A9%E7%94%A8%E8%80%85:Joeedh/SummerOfCode2007&amp;diff=54698&amp;oldid=prev"/>
		<updated>2018-06-28T17:51:32Z</updated>

		<summary type="html">&lt;p&gt;1版 をインポートしました&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;ja&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;← 古い版&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;2018年6月28日 (木) 17:51時点における版&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-notice&quot; lang=&quot;ja&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(相違点なし)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Yamyam</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.blender.jp/index.php?title=%E5%88%A9%E7%94%A8%E8%80%85:Joeedh/SummerOfCode2007&amp;diff=54697&amp;oldid=prev</id>
		<title>2007年7月31日 (火) 00:35にwiki&gt;Joeedhによる</title>
		<link rel="alternate" type="text/html" href="https://wiki.blender.jp/index.php?title=%E5%88%A9%E7%94%A8%E8%80%85:Joeedh/SummerOfCode2007&amp;diff=54697&amp;oldid=prev"/>
		<updated>2007-07-31T00:35:00Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新規ページ&lt;/b&gt;&lt;/p&gt;&lt;div&gt;=Introduction=&lt;br /&gt;
Deep shadow maps are a technique to create filtered, transparent, colored shadow maps.&lt;br /&gt;
&lt;br /&gt;
Papers used:&lt;br /&gt;
&lt;br /&gt;
http://graphics.stanford.edu/papers/deepshadows/deepshad.pdf&lt;br /&gt;
&lt;br /&gt;
http://www.tabellion.org/et/paper07/egsr07_mtsm.pdf&lt;br /&gt;
&lt;br /&gt;
=Design=&lt;br /&gt;
&lt;br /&gt;
==DSM Structure==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
/*Each tile has its own memarena to work better with caching.*/&lt;br /&gt;
typedef struct DSMTile {&lt;br /&gt;
	struct TCS_Tile tile;&lt;br /&gt;
	&lt;br /&gt;
	/*each of the arrays pointed in these 2 array rects has the length&lt;br /&gt;
	  as the first element, stored in the int format.  this way&lt;br /&gt;
	  we can use a binary search to make things easier.*/&lt;br /&gt;
	float **color_rect; //includes alpha&lt;br /&gt;
	unsigned int **depth_rect;&lt;br /&gt;
	int x, y;&lt;br /&gt;
	int sizex, sizey;&lt;br /&gt;
	struct MemArena *arena;&lt;br /&gt;
} DSMTile;&lt;br /&gt;
&lt;br /&gt;
typedef struct DSMBuffer {&lt;br /&gt;
	TCS_Buffer buffer;&lt;br /&gt;
	float winmat[4][4];&lt;br /&gt;
	float clipstart, clipend;&lt;br /&gt;
	float lens; /*this is in degrees, for field of view*/&lt;br /&gt;
	&lt;br /&gt;
	DSMTile *poly_rect;&lt;br /&gt;
	int sizex, sizey;&lt;br /&gt;
	int tilex, tiley;&lt;br /&gt;
	int max_depth; /*the maximum number of samples in a single pixel*/&lt;br /&gt;
	struct TCS_TileBuffer *cachebuffer;&lt;br /&gt;
} DSMBuffer;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
These are the deep shadow buffer structures.  Each deep shadow buffer is divided into tiles, each of which is allocated with its own memarena.  Each tile has 2 2d pointer arrays, one where each cell points to an array of RGBA values, and another where the cell points to an array of depth values (note that these 2 arrays correspond to each other).  The initial implementation simply stores depth/rgba pairs instead of visibility functions.&lt;br /&gt;
&lt;br /&gt;
For zbuffering, a special version of zbuffer_abuf has been created, that works with all faces (for now, to avoid the complexity of using 2 zbuffer schemes), rather then just ztransp ones, and allows setting an arbitrary number of oversamples.&lt;br /&gt;
&lt;br /&gt;
==Generic Tile System Structure==&lt;br /&gt;
These are the structures I wrote for the tile system:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;typedef struct TCS_Tile {&lt;br /&gt;
	struct TCS_Tile *next, *prev;&lt;br /&gt;
	void (*loadFromCache)(struct TCS_Tile *self, struct FILE *file, unsigned long start);&lt;br /&gt;
	&lt;br /&gt;
	/*returns length*/&lt;br /&gt;
	unsigned int (*saveToCache(struct TCS_Tile *self, struct FILE *file, unsigned&lt;br /&gt;
 long current_position);&lt;br /&gt;
	int is_cached;&lt;br /&gt;
	struct TCS_TilePool *pool;&lt;br /&gt;
	struct TCS_TileBuffer *buffer; /*parent buffer*/&lt;br /&gt;
 } TCS_Tile;&lt;br /&gt;
 &lt;br /&gt;
 /*pools manage tiles, but the the tiles themselves belong to TCS_TileBuffers&lt;br /&gt;
   this is a generic container structure.*/&lt;br /&gt;
 typedef struct TCS_TilePool {&lt;br /&gt;
	struct TCS_TilePool *next, *prev;&lt;br /&gt;
	ListBase tiles;&lt;br /&gt;
	&lt;br /&gt;
	unsigned int tottiles;&lt;br /&gt;
	unsigned long maxmem;&lt;br /&gt;
 } TCS_TilePool;&lt;br /&gt;
 &lt;br /&gt;
 typedef struct TCS_TileBuffer {&lt;br /&gt;
	struct TCS_TileBuffer *next, *prev;&lt;br /&gt;
	void (*makeTiles)(TCS_TileBuffer *self, TCS_TilePool *cachepool);&lt;br /&gt;
	void (*freeBuffer)(TCS_TileBuffer *self);&lt;br /&gt;
&lt;br /&gt;
	/*as may dimensions can be used as needed, others can just be passed in as 0.*/&lt;br /&gt;
	void (*getTile)(TCS_TileBuffer *self, int x, int y, int z);&lt;br /&gt;
	void (*getTileMemUsage)(TCS_TileBuffer *self, int x, int y, int z);&lt;br /&gt;
	TCS_TilePool *pool;&lt;br /&gt;
 } TCS_TileBuffer;&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that I havn't done any implementation for this yet.  Just needed to figure out how it'd work so I knew how to design the DSM structures.&lt;br /&gt;
&lt;br /&gt;
==Low-level Memory Cache System==&lt;br /&gt;
I've written the start of a system for disk-caching memory chunks with compressed file&lt;br /&gt;
I/O.  The system is designed to support pointer restoration.&lt;/div&gt;</summary>
		<author><name>wiki&gt;Joeedh</name></author>
		
	</entry>
</feed>