f6f433529f
Talking with Emilian about this commit, we came to the conclusion we don't want share uniform between .eff file This reverts commit 91a6a27f32ee5f79e1d7e0d4570e879a902de58f.
127 lines
3.8 KiB
XML
127 lines
3.8 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
|
|
|
<!--
|
|
|
|
A light "cone" effect, written by Lauri Peltonen (Zan)
|
|
|
|
With this effect, any object (most likely a cone) will
|
|
light up everything inside of it. Might be usefull for
|
|
landing lights etc.
|
|
|
|
Uses stencil buffer.
|
|
|
|
-->
|
|
|
|
|
|
<PropertyList>
|
|
<name>Effects/light-cone</name>
|
|
<inherits-from>Effects/model-default</inherits-from>
|
|
<parameters>
|
|
<texture n ="0">
|
|
<type>white</type>
|
|
</texture>
|
|
|
|
<!-- Dunno if this does anything, it could be removed
|
|
what does this do with rendering-hint=transparent? -->
|
|
<render-bin>
|
|
<active>true</active>
|
|
<bin-number>9</bin-number>
|
|
<bin-name>RenderBin</bin-name>
|
|
</render-bin>
|
|
|
|
</parameters>
|
|
<technique n="8">
|
|
|
|
<!-- First pass, increase stencil when ground is in front of
|
|
the lighting object -->
|
|
<pass>
|
|
<render-bin>
|
|
<active>true</active>
|
|
<bin-number>9</bin-number>
|
|
<bin-name>RenderBin</bin-name>
|
|
</render-bin>
|
|
|
|
<lighting>false</lighting>
|
|
|
|
<color-mask type="vec4d">0 0 0 0</color-mask> <!-- do not draw anything -->
|
|
|
|
<shade-model><use>shade-model</use></shade-model>
|
|
<cull-face>front</cull-face>
|
|
<!-- <rendering-hint>transparent</rendering-hint> -->
|
|
<depth>
|
|
<write-mask>false</write-mask>
|
|
</depth>
|
|
|
|
<!-- Set stencil buffer to 1 if ground is in front of the back side
|
|
of the light volume, otherwise zero -->
|
|
<stencil>
|
|
<function>always</function> <!-- S-test passes always -->
|
|
<value>1</value>
|
|
<z-fail>replace</z-fail> <!-- Replace current s-buffer with value 1 -->
|
|
<pass>zero</pass> <!-- Zero everything "behind" the volume -->
|
|
</stencil>
|
|
</pass>
|
|
|
|
|
|
<!-- Second pass, decrease stencil when ground is in front of the front
|
|
side of the volume, in stencil buffer, 1 exists where ground
|
|
(or other objects) is inside the lighting object! -->
|
|
<pass>
|
|
<render-bin>
|
|
<active>true</active>
|
|
<bin-number>9</bin-number>
|
|
<bin-name>RenderBin</bin-name>
|
|
</render-bin>
|
|
|
|
<lighting>false</lighting>
|
|
<color-mask type="vec4d">0 0 0 0</color-mask> <!-- Do not draw anything -->
|
|
<shade-model><use>shade-model</use></shade-model>
|
|
<cull-face>back</cull-face>
|
|
<!-- <rendering-hint>transparent</rendering-hint> -->
|
|
<depth>
|
|
<write-mask>false</write-mask>
|
|
</depth>
|
|
|
|
<!-- Set s-buffer to 0 when ground is in front of the front side of the volume -->
|
|
<stencil>
|
|
<function>always</function> <!-- S-test passes always -->
|
|
<z-fail>zero</z-fail> <!-- Zero s-buffer when z-buffer test fails -->
|
|
</stencil>
|
|
</pass>
|
|
|
|
<!-- Third pass, render light where there is 1 on stencil buffer -->
|
|
<pass>
|
|
<render-bin>
|
|
<active>true</active>
|
|
<bin-number>9</bin-number>
|
|
<bin-name>RenderBin</bin-name>
|
|
</render-bin>
|
|
|
|
<lighting>false</lighting>
|
|
<shade-model><use>shade-model</use></shade-model>
|
|
<cull-face>back</cull-face>
|
|
<!-- <rendering-hint>transparent</rendering-hint> -->
|
|
<depth>
|
|
<write-mask>false</write-mask>
|
|
</depth>
|
|
|
|
<!-- Draw when S-buffer EQUALS value 1 -->
|
|
<stencil>
|
|
<function>equal</function>
|
|
<value>1</value>
|
|
</stencil>
|
|
|
|
<!-- Do additive blending, so increase the color value of
|
|
the existing pixel by the light's color. The light object should
|
|
have ambient & diffuse AND alpha should be around 0.2 or something -->
|
|
<blend>
|
|
<active>true</active>
|
|
<source-rgb>dst-color</source-rgb>
|
|
<source>dst-alpha</source>
|
|
<destination>one</destination>
|
|
</blend>
|
|
|
|
</pass>
|
|
|
|
</technique>
|
|
</PropertyList>
|