A method, comprising: accessing, using one or more processors, a first representation of a dependency graph, the first representation of the dependency graph having a first type and including a plurality of nodes, wherein the dependency graph is a dependency graph for rendering one or more animation frames; detecting, using the one or more processors, a transition of the first representation of the dependency graph from a first state to a second state; and in response to detecting the transition of the first representation of the dependency graph from the first state to the second state, updating, using the one or more processors, a second representation of the dependency graph, the second representation having a second type different than the first type and including a plurality of tasks corresponding to the plurality of nodes, where one or more of the plurality of tasks are evaluated to compute one or more values for providing a frame, wherein the updating includes marking at least one of the plurality of tasks to indicate that the at least one of the plurality of tasks requires evaluation; wherein the updating of the second representation of the dependency graph is made in accordance with a set of update rules, where the update rules govern the manner in which tasks and dependencies are added, removed, and/or modified during an update of the second representation; wherein whether or not the second representation is updated is based on a type of an update of the first representation; and rendering the one or more animation frames based on the updated second representation of the dependency graph. accessing, using one or more processors, a first representation of a dependency graph, the first representation of the dependency graph having a first type and including a plurality of nodes, wherein the dependency graph is a dependency graph for rendering one or more animation frames; detecting, using the one or more processors, a transition of the first representation of the dependency graph from a first state to a second state; and in response to detecting the transition of the first representation of the dependency graph from the first state to the second state, updating, using the one or more processors, a second representation of the dependency graph, the second representation having a second type different than the first type and including a plurality of tasks corresponding to the plurality of nodes, where one or more of the plurality of tasks are evaluated to compute one or more values for providing a frame, wherein the updating includes marking at least one of the plurality of tasks to indicate that the at least one of the plurality of tasks requires evaluation; wherein the updating of the second representation of the dependency graph is made in accordance with a set of update rules, where the update rules govern the manner in which tasks and dependencies are added, removed, and/or modified during an update of the second representation; wherein whether or not the second representation is updated is based on a type of an update of the first representation; and rendering the one or more animation frames based on the updated second representation of the dependency graph.