Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
43 commits
Select commit Hold shift + click to select a range
a885b89
Mavenize project, add gitignore, remove old build
karelp Sep 6, 2016
f0bbd38
Add missing files
karelp Sep 6, 2016
0e21ca8
Fixed infinite loop in bih caused by small triangle (by k-matsuzaki)
karelp Sep 6, 2016
adf4518
Fix missing TriangleMeshLight shader in PluginRegistry
karelp Sep 6, 2016
7e8d24e
Improve efficiency of TriangleMeshLight using FastMath library (up to…
karelp Sep 12, 2016
02d9b9f
Implement back-face culling for triangle meshes
karelp Sep 12, 2016
89c4756
Use kd-tree for meshes with 2 and more triangles as it helps even for…
karelp Sep 12, 2016
a06c0bc
Allow changing shading cache parameters for a quality/speed trade-off
karelp Sep 17, 2016
8460c0d
Fix canceling for MultipassRenderer, make dimming previously rendered…
karelp Oct 3, 2016
f694466
Update janino version to 2.7.8
yuripourre Aug 15, 2017
2211efd
Update README
yuripourre Aug 15, 2017
57593aa
Extract parameters
yuripourre Jul 19, 2018
804fcc8
Allow getting rendered image from ImagePanel
karelp Jul 19, 2018
e79fa0e
Merge pull request #2 from Harium/parameters
karelp Jul 19, 2018
ce3dc85
Fix tests
yuripourre Jul 29, 2018
6d0e161
Add travis file
yuripourre Jul 29, 2018
522949f
Merge pull request #4 from Harium/master
karelp Jul 29, 2018
d5ca845
Create instanceParameter on setup geometries
yuripourre Apr 13, 2019
7075289
Merge pull request #6 from Harium/fix-instances
yuripourre Apr 13, 2019
57f68c7
Adds convenient methods to ObjectParameter and turns InstanceParamete…
yuripourre Apr 13, 2019
540be2d
Adds GumboAndTeapot and SphereFlake as procedural scenes
yuripourre Apr 13, 2019
5606fb5
Merge pull request #7 from Harium/convenient-methods
yuripourre Apr 13, 2019
2946533
Add self-intersection bias parameter based on k-matsuzaki's repository
yuripourre Aug 3, 2018
1817635
Merge pull request #8 from Harium/self-intersection-bias
yuripourre Apr 13, 2019
7044590
Adds wireframe scene and fixes GumboAndTeapot
yuripourre Apr 13, 2019
6eff7be
Refactoring
yuripourre Apr 13, 2019
0a01cdd
Adds BumpScene
yuripourre Apr 13, 2019
2a481e2
Generate unique name to lights
yuripourre Apr 13, 2019
39b23f1
Remove bump_demo_small
yuripourre Apr 13, 2019
9fdc1f9
Adds JuliaScene
yuripourre Apr 13, 2019
a4f7e96
Fix test
yuripourre Apr 13, 2019
70426f0
Merge pull request #10 from Harium/more-scenes
yuripourre Apr 13, 2019
cfd77dd
Fix sponge scene
yuripourre Apr 14, 2019
1130b7f
Add Sunflow Manual (v0.07.2)
yuripourre Apr 14, 2019
516cc70
Update CHANGELOG
yuripourre Apr 14, 2019
26cea68
Prepare to Maven Central release
yuripourre Apr 14, 2019
56ae099
Bump version to 0.07.5
yuripourre Apr 14, 2019
2a5da4c
Update README
yuripourre Apr 14, 2019
451879e
Add box type
yuripourre Apr 15, 2019
c39511e
Add a Cornell box scene with boxes
yuripourre Apr 15, 2019
0eb16d9
Update CHANGELOG
yuripourre Apr 15, 2019
35aaa8c
Update version in SunflowAPI
yuripourre Apr 15, 2019
d1976f8
Check if normals and uvs are null
yuripourre Apr 16, 2019
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
7 changes: 0 additions & 7 deletions .classpath

This file was deleted.

20 changes: 0 additions & 20 deletions .externalToolBuilders/Ant Build.launch

This file was deleted.

3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
*.iml
.idea
target/
27 changes: 0 additions & 27 deletions .project

This file was deleted.

258 changes: 0 additions & 258 deletions .settings/org.eclipse.jdt.core.prefs

This file was deleted.

6 changes: 0 additions & 6 deletions .settings/org.eclipse.jdt.ui.prefs

This file was deleted.

3 changes: 0 additions & 3 deletions .settings/org.eclipse.ltk.core.refactoring.prefs

This file was deleted.

5 changes: 5 additions & 0 deletions .travis.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
language: java
install: mvn install -DskipTests=true -Dmaven.javadoc.skip=true -Dgpg.skip=true -B -V
script: mvn test -Dgpg.skip=true
jdk:
- oraclejdk8
9 changes: 9 additions & 0 deletions CHANGELOG
Original file line number Diff line number Diff line change
@@ -1,3 +1,12 @@
v0.07.5
* Added procedural scenes
* Added box type
v0.07.4
* Updated janino version to 2.7.8
* Allow changing shading cache parameters for a quality/speed trade-off
* Fixed missing TriangleMeshLight shader in PluginRegistry
* Fixed self-intersection bias
* Fixed infinite loop in bih caused by small triangle
v0.07.3
* Fixed bump mapping to correctly treat black as the lowest point in the map
* Added command line override for samples paramter (affect bucket and multipas samplers)
Expand Down
79 changes: 54 additions & 25 deletions README → README.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
Sunflow Global Illumination Rendering System
v0.07.3
# Sunflow Global Illumination Rendering System
v0.07.5

Contact: Christopher Kulla
fpsunflower@users.sourceforge.net
Expand All @@ -9,12 +9,10 @@ Contact: Christopher Kulla

Sunflow is a rendering system for photo-realistic image synthesis. It is written in Java and built around a flexible ray tracing core and an extensible object-oriented design.

Please consult the LICENSE file for license information.

----------------------------------------------------------------

Quickstart:
Please consult the [LICENSE file](https://github.com/Harium/sunflow/blob/master/LICENSE) for license information.

<details>
<summary>Quickstart</summary>
The fastest way to get started rendering images if you are not familiar with Java development is to get the binary release from the website. You will also need the latest Java SE JDK (to get the server VM) from http://java.sun.com/.

Launch sunflow from the command prompt like this:
Expand All @@ -31,12 +29,18 @@ You can find some simple demo scenes on the website's data distribution. A simpl

DISCLAIMER:
Keep in mind that this is still an early version. At the moment you will need to dig around the scene files in order to get the most out of the software. If you have any questions, feel free to e-mail me at the adress at the top.
</details>

----------------------------------------------------------------
<details>
<summary>Build instructions</summary>
Download the latest JDK (6.0 at the time of this writing) if you don't have it already. Please note that the source code makes use of some new features like generics. Keep this in mind if you are trying to compile/run the code under a different JVM.

Build instructions:
Using mvn, type:
```bash
mvn clean package
```

Download the latest JDK (6.0 at the time of this writing) if you don't have it already. Please note that the source code makes use of some new features like generics. Keep this in mind if you are trying to compile/run the code under a different JVM.
Or, using javac

Create a main directory to hold the code (for example, "sunflow") and unzip the contents of the source package into it, preserving sub-directories. Create the "classes" subdirectory if your unzip program did not. You may now compile the software from the main directory by running:

Expand All @@ -48,15 +52,18 @@ once the compiling is complete, run the code with:

The tips above apply here as well (-Xmx and -server command line options).

----------------------------------------------------------------
</details>

Scene file format:

## Scene file format

The SunflowGUI program accepts input in the .sc file format. As this is only a temporary file format, the best documentation for it is SCParser.java. You may also get a feel for what is supported by examining the example scene files provided in the data distribution.

----------------------------------------------------------------
More information can be found at the [manual](https://github.com/Harium/sunflow/blob/master/Sunflow-Manual.pdf).

Rendering options:
----------------------------------------------------------------
<details>
<summary>Rendering options</summary>

Here is a quick explanation of the basic rendering options.

Expand Down Expand Up @@ -95,7 +102,7 @@ Box and triangle are best for previews as they are small and fast. The other fil

Bucket rendering:

Sunflow proceses the image to be rendered in small squares called buckets. The size of these buckets can be controlled by a pixel width. Each rendering thread will be a assigned a single bucket. You may not get the bucket size you expect if you try to make them really small or really big, as there are some hard-coded limits to prevent excessive memory usage or excessive overhead.
Sunflow proceses the image to be rendered in small squares called buckets. The size of these buckets can be controlled by a pixel width. Each rendering thread will be assigned to a single bucket. You may not get the bucket size you expect if you try to make them really small or really big, as there are some hard-coded limits to prevent excessive memory usage or excessive overhead.

The bucket ordering simply affects the order in which the buckets appear. They shouldn't have too much of an effect on overall rendering speed.

Expand All @@ -117,21 +124,43 @@ Caustics are produced by light shining through refractive objects or being bounc

Once you have a number of photons to emit, you must pick a way to store them. Only a kd engine is currently available for caustics. You can then set a value for the number of photons to gather at each shading point (start with ~50 to ~100) as well as a maximum search radius. These settings are highly scene dependent so experiment with them until you get satisfactory results.

----------------------------------------------------------------
</details>

Third party libraries:
## Third party libraries

Sunflow makes use of the following libraries, distributed according to the following terms:

<details>
<summary>Janino License</summary>
Janino - An embedded Java[TM] compiler

Copyright (c) 2006, Arno Unkrig
Copyright (c) 2001-2016, Arno Unkrig
Copyright (c) 2015-2016 TIBCO Software Inc.
All rights reserved.

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
3. The name of the author may not be used to endorse or promote products derived from this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:

1. Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above
copyright notice, this list of conditions and the following
disclaimer in the documentation and/or other materials
provided with the distribution.
3. Neither the name of JANINO nor the names of its contributors
may be used to endorse or promote products derived from this
software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
</details>
Binary file added Sunflow-Manual.pdf
Binary file not shown.
2 changes: 1 addition & 1 deletion build.xml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<project name="Sunflow" default="release">
<!-- This needs to change with every release -->
<property name="sunflow.version" value="0.07.3" />
<property name="sunflow.version" value="0.07.5" />
<property name="sunflow.jdk.level" value="5" />
<property name="sunflow.zip.comment" value="Sunflow rendering system v${sunflow.version}" />
<property name="sunflow.libs" value="janino.jar" />
Expand Down
Binary file removed janino.jar
Binary file not shown.
149 changes: 149 additions & 0 deletions pom.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,149 @@
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.harium.sunflow</groupId>
<artifactId>core</artifactId>
<version>0.07.5</version>
<name>Sunflow</name>
<description>Sunflow Global Illumination Rendering System</description>
<url>http://github.com/Harium/sunflow</url>
<scm>
<connection>scm:git:git://github.com/harium/sunflow.git</connection>
<developerConnection>scm:git:ssh://github.com:harium/sunflow.git</developerConnection>
<url>http://github.com/harium/sunflow/tree/master</url>
</scm>
<distributionManagement>
<snapshotRepository>
<id>ossrh</id>
<url>https://oss.sonatype.org/content/repositories/snapshots</url>
</snapshotRepository>
<repository>
<id>ossrh</id>
<url>https://oss.sonatype.org/service/local/staging/deploy/maven2/</url>
</repository>
</distributionManagement>
<properties>
<javadoc.opts>-Xdoclint:none</javadoc.opts>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<gpg.executable>gpg2</gpg.executable>
</properties>
<licenses>
<license>
<name>MIT License</name>
<url>http://www.opensource.org/licenses/mit-license.php</url>
</license>
</licenses>
<developers>
<developer>
<name>Contributors</name>
<url>https://github.com/Harium/sunflow/graphs/contributors</url>
</developer>
</developers>
<dependencies>
<dependency>
<groupId>org.codehaus.janino</groupId>
<artifactId>janino</artifactId>
<version>2.7.8</version>
</dependency>
<dependency>
<groupId>net.jafama</groupId>
<artifactId>jafama</artifactId>
<version>2.1.0</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-all</artifactId>
<version>1.10.19</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.5.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<optimize>true</optimize>
<excludes>
<exclude>**/examples/*</exclude>
<exclude>**/exporters/*</exclude>
<exclude>**/resources/*</exclude>
</excludes>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<version>2.2.1</version>
<executions>
<execution>
<id>attach-sources</id>
<goals>
<goal>jar-no-fork</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>2.9.1</version>
<executions>
<execution>
<id>attach-javadocs</id>
<goals>
<goal>jar</goal>
</goals>
<configuration>
<additionalparam>${javadoc.opts}</additionalparam>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-gpg-plugin</artifactId>
<version>1.6</version>
<executions>
<execution>
<id>sign-artifacts</id>
<phase>verify</phase>
<goals>
<goal>sign</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.sonatype.plugins</groupId>
<artifactId>nexus-staging-maven-plugin</artifactId>
<version>1.6.7</version>
<extensions>true</extensions>
<executions>
<execution>
<id>default-deploy</id>
<phase>deploy</phase>
<goals>
<goal>deploy</goal>
</goals>
</execution>
</executions>
<configuration>
<serverId>ossrh</serverId>
<nexusUrl>https://oss.sonatype.org/</nexusUrl>
<autoReleaseAfterClose>true</autoReleaseAfterClose>
</configuration>
</plugin>
</plugins>
</build>
</project>
Loading